2016-03-22 4 views
0

Ich möchte Lucene verwenden, um einen Stream zu indizieren, während er gelesen wird. Aufgrund der Größe der Daten und des begrenzten RAM kann ich das Ganze nicht in einen Puffer packen; stattdessen möchte ich, dass Lucene aus dem Stream konsumiert, indexiert wird, bis weitere Daten verfügbar sind, mehr konsumieren, bis EOF.Lucene: Indizieren eines Streams (nicht in einem Puffer verfügbar)

Lucene sollte nur das puffern, was es benötigt: das sind Teil-Tokens, bis genug Zeichen erworben wurden, um das Token zu beenden.

Kann ich das mit Lucene machen? Wie?

Antwort

0

Sie sollten einen Reader in Ihrem Feldkonstruktor anstelle eines String übergeben können. Ich glaube, das würde nicht nötig sein, das gesamte Feld in den Speicher zu schreiben (ich habe nicht wirklich viel getestet). Sie könnten das Feld nicht speichern, aber wenn Sie es nicht in den Speicher laden können, warum möchten Sie?

Allerdings glaube ich nicht, dass es eine Möglichkeit gibt, nur teilweise Token zu einem Zeitpunkt zu lesen. Ich glaube, dass Sie in der Lage sein müssen, jedes Token in einem Speicher auf ein absolutes Minimum zu laden. Wenn Ihre Tokens so groß sind, dass der verfügbare Speicher überläuft, müssen Sie wahrscheinlich Ihr Analyseschema überdenken.