Lucene und SQL Server - Best Practice

8

Ich bin ziemlich neu in Lucene, also würde ich gerne Hilfe von euch bekommen:)

HINTERGRUND: Derzeit habe ich Dokumente in SQL Server gespeichert und möchte Lucene für Volltext / Tag-Suchvorgänge für diese Dokumente in SQL Server verwenden.

Q1) Sollte ich in diesem Fall alle diese Dokumente in den Lucene-Index einfügen, um die Stichwortsuche an den Dokumenten durchzuführen? Bedeutet dies, dass es Datenduplizierungen geben wird (eine in SQL Server und die andere im Lucene-Index?). Es könnte eine Frage sein, da wir eine riesige Menge an Dokumenten haben (etwa 100 GB). Ist das unvermeidlich?

Q2) Außerdem enthält jedes Dokument eine Gruppe von Tags (bis zu 3). Lucene ist auch eine gute Wahl für die Tag-Suche? Wenn ja, wie geht das?

Danke,

    
soleiljy 27.02.2013, 19:10
quelle

2 Antworten

5

Ja, die Volltextsuche über Lucene und die Datenspeicherung über eine herkömmliche Datenbank ist eine gut unterstützte Architektur. Schauen Sie hier für eine kurze Einführung. Eine typische Implementierung besteht darin, alles zu indizieren, das die Suche unterstützen soll, und nur einen eindeutigen Bezeichner im Lucene-Index zu speichern und alle Datensätze, die durch eine Suche gefunden wurden, basierend auf der ID aus der Datenbank abzurufen. Wenn Sie die Datenbanklast reduzieren möchten, können Sie einige Informationen in Lucene speichern, um eine Liste der Suchergebnisse anzuzeigen, und nur die Datenbank abfragen, um das vollständige Dokument abzurufen.

Um Platz zu sparen, wird es einige Überschneidungen geben. Dies gilt auch, wenn Sie nur Lucene, obwohl. Lucene speichert den invertierten Index, der zum Suchen ganz getrennt von den gespeicherten Daten verwendet wird. Um Platz zu sparen, empfehle ich, sehr genau darüber nachzudenken, welche Daten Sie indexieren und was Sie speichern und später abrufen können. Was Sie speichern, ist besonders wichtig, um in Lucene Platz zu sparen, da indexierte Werte in den meisten Fällen sehr platzsparend sind.

Lucene kann sicherlich eine Tag-Suche implementieren. Der einfachste Weg, es zu implementieren, wäre, jedes Tag zu einem Feld Ihrer Wahl hinzuzufügen (ich nenne das "Tags", was sinnvoll erscheint), während ich das Dokument erstelle, wie zum Beispiel:

%Vor%

und ich könnte einfach einen erforderlichen Begriff zu jeder Abfrage hinzufügen, um nur innerhalb eines bestimmten Tags zu suchen. Zum Beispiel, wenn ich nach "ein paar Sachen" suchen würde, aber nur mit dem Tag "forkids", könnte ich eine Abfrage schreiben wie:

%Vor%     
femtoRgon 27.02.2013, 20:21
quelle
1

Dokumente können auch in Lucene gespeichert werden. Sie können sie mithilfe der Dokument-ID abrufen und darauf verweisen.

Ich würde empfehlen, Solr Ссылка über Lucene zu verwenden, ist benutzerfreundlicher und hat mehrwertige Felder (für die Tags) standardmäßig verfügbar.

Ссылка

    
Elmer 27.02.2013 19:17
quelle

Tags und Links