Wie zu verwenden TermVector Lucene 4.0
In der indexing-Methode, die ich verwenden Sie die folgende Zeile:
Field contentsField = new Field("contents", new FileReader(f), Field.TermVector.YES);
Jedoch in Lucene 4.0 wird dieser Konstruktor ist veraltet und wird new TextField
sollte verwendet werden, anstelle von new Field
.
Aber das problem mit TextField
ist, dass es nicht akzeptieren TermVector
in seine Konstruktoren.
Gibt es eine Möglichkeit um den Begriff Vektor in meinem Indexierung Lucene 4.0 mit dem neuen Konstruktoren?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
TextField ist eine Komfort-Klasse für Benutzer, die indizierten Felder ohne term-Vektoren. Wenn Sie brauchen, Begriffe Vektoren, verwenden Sie einfach ein Feld. Es dauert noch ein paar Zeilen mehr code, da müssen Sie erstellen eine Instanz von FieldType zunächst
storeTermVectors
undtokenizer
zu wahren und verwenden Sie dann dieseFieldType
Instanz inField
Konstruktor.Ich hatte das gleiche problem, also habe ich einfach meinen eigenen Bereich:
}
Hoffe, das hilft
War ich etwas verblüfft über diese für eine Weile. Die anderen Antworten hier sind hilfreich, aber auch mit Ihnen war die situation offensichtlich nicht zu mir. So, nachdem das Licht endlich ging für mich habe ich beschlossen, fügen Sie diese zusätzliche Antwort, um die Dinge ein wenig klarer für die nächste person.
Dem Grund, dass die
Field
Unterschrift unterstützt term-Vektoren abgeschrieben ist, weil es nutzt dieField.TermVector enum
was wird abgeschrieben, da der Lucene 4.0.In Lucene 4.0, eine neue Signatur der Methode wurde Hinzugefügt, um die
Field
Klasse, unterstützt die übergabe einesFieldType
statt. DieFieldType
- Klasse ist flexibler als die altenenum
Ansatz und bietet die Möglichkeit, noch mehr Feld Optionen dann zuvor zur Verfügung.Hier ist ein Beispiel, wie man ein Textfeld erstellt haben, nicht gespeichert, unterstützt term-Vektoren, indem eine
FieldType
Objekt beim instanzieren einesField
Objekt.