Schnelle zeilenweise Volltextsuche nach Unix-Verzeichnisstruktur

525
knipknap

Ich versuche, eine GUI zum Durchsuchen einer großen Anzahl riesiger Konfigurationsdateien (ca. 60000 Dateien mit jeweils einer Größe zwischen 20 KByte und 50 MByte) zu erstellen. Diese Dateien werden auch regelmäßig aktualisiert (~ 3-mal pro Tag).

Bisher habe ich SOLR und Sphinx gefunden, aber es wurde keine Möglichkeit gefunden, die Liste der übereinstimmenden Zeilen mit einer Zeilennummer für jedes übereinstimmende Dokument zurückzugeben.

Was wir derzeit tun, ist, dass wir jede Textdatei in XML konvertieren:

<xml> <line number="1">foobar</line> <line number="2">barfoo</line> ... </xml> 

und speichern Sie das Ergebnis in einer eXist-Datenbank. Das Speichern von Dokumenten ist jedoch viel zu langsam, daher brauchen wir eine Alternative.

Irgendwelche besseren Ideen?

1

1 Antwort auf die Frage

0
RedGrittyBrick

Meinung: Wenn Sie über große Mengen flüchtiger Textdaten verfügen, auf die Sie einen schnellen Zugriff benötigen, wird die Konvertierung in XML die Lösung Ihrer Probleme erheblich erschweren.

Irgendwelche besseren Ideen?

Lassen Sie die Dateien als Text und verwenden Sie Lucene .

(Ich gehe davon aus, dass grepdas es nicht schneidet)

"Manche Leute denken, wenn sie mit einem Problem konfrontiert sind:" Ich weiß, ich verwende XML ". Jetzt haben sie zwei Probleme." Paul vor 12 Jahren 1
Die einzige Möglichkeit, Lucene-Zeilennummern zu erstellen, besteht darin, jede Zeile in einem separaten Dokument zu speichern. Dies macht jedoch die Aktualisierung eines Dokuments schwierig (und es ist wahrscheinlich unmöglich, Aktualisierungen schnell durchzuführen). knipknap vor 12 Jahren 0
@knipknap: Ich kann nicht herausfinden, ob es so ist [dieses Beispiel] (http://www.tom-carden.co.uk/2007/08/01/aquick-less-certain-note-on-using) -lucene-in-processing /) macht es. ([Applet mit Quelle] (http://www.tom-carden.co.uk/p5/simple_lucene_demo/applet/)) RedGrittyBrick vor 12 Jahren 0
Die Demo fügt nur eine Datei hinzu, aber sie speichert jede Zeile als separates Dokument. Verwenden Sie dazu die Schleife im Kommentar "Ziehen Sie die Daten aus unserer Liste und fügen Sie sie dem Index hinzu" in SimpleLucene.java. Da sie keine Updates durchführen, ist dies kein Problem. knipknap vor 12 Jahren 0