2016-05-07 11 views
0

Sagen wir, ich habe große Solr, die ~ 150M Dokumente enthält. Ich habe auch 100.000 Benutzer, dass jeder Benutzer Dokumente, die er gespeichert hat. Meine Fragen:Suche nach spezifischen IDs in Solr

  1. Was ist der beste Weg, um diese Dokumente IDs zu speichern (die Dokumente, die jeder Benutzer gespeichert)
  2. Wenn ich die IDs in Mongo oder MySql speichern entschieden, was der beste Weg ist, zu ermöglichen, Die Benutzer führen Suchvorgänge in ihren Dokumenten durch, was bedeutet, dass ich nur die IDs auf Mongo/MySQL speichere, aber die eigentlichen Informationen sind auf Solr.

Danke.

Antwort

0

Sie können jedem Dokument, das indiziert wird, ein Feld username_s hinzufügen. Dieses Feld enthält den Benutzernamen, der auf das Dokument zugreifen darf. Sie können auch eine Reihe von Benutzern verwenden, wenn Sie mehr Personen Zugriff auf dieses Dokument gewähren möchten.

Dann können Sie in Ihrem Backend & fq = username_s: User hinzufügen. Auch wenn 100 Millionen Dokumente indiziert sind, werden nur diejenigen angezeigt, die dem Benutzer gehören.

/core/select?q=*.*&fq=username_s:<User> 

könnten Sie speichern alle Dokumente für alle Benutzer in der gleichen Kern, lassen Sie das Feld „id“ leer und eine unqiue-ID wird für Sie von solr automatisch generiert.

+0

Danke für die Antwort, aber ich denke nicht, dass diese Lösung in großem Maßstab funktioniert, kann jedes Dokument von 1000s von Benutzern zugegriffen werden, wie kann ich in username_s so viele user_ids speichern? –

+0

Warum möchten Sie so viele Benutzernamen in diesem Feld speichern? Wenn Sie möchten, dass jeder Zugriff auf dieses Dokument hat, lassen Sie den Parameter & fq = username_s aus, oder definieren Sie für bestimmte Benutzer ein Gruppenfeld. Um die IDs aus den Dokumenten, die vom Benutzer hinzugefügt wurden, zu protokollieren, muss dies in einem eigenen Indexierungs-Pipelineskript erfolgen. Jedes Dokument hat eine eigene ID. Sie können die ID des Dokuments in einer MySQL-Datenbank protokollieren und sie dem Benutzer anzeigen, der sie erstellt hat, z. B. in einer Webschnittstelle. – user3606329