Lucene Suche und Unterstriche

8

Wenn ich Luke verwende, um meinen Lucene-Index mit einem Standard-Analysator zu durchsuchen, kann ich sehen, dass das Feld, nach dem ich suche, enthält Werte des Formulars MY_VALUE. Wenn ich nach Feld "MY_VALUE" suche, wird die Abfrage als Feld analysiert: "mein Wert"

Gibt es eine einfache Möglichkeit, den Unterstrich (_) zu umgehen, damit er danach sucht?

BEARBEITEN:

4/1/2010 11:08 AM PST

Ich denke, es gibt einen Bug im Tokenizer für Lucene 2.9.1 und es war wahrscheinlich schon einmal da. Lade Luke hoch und versuche nach "BB_HHH_FFFF5_SSSS" zu suchen. Wenn eine Nummer vorhanden ist, werden folgende Token zurückgegeben:

"bb hhh_ffff5_ssss"

Nach einigen Tests habe ich festgestellt, dass dies an der Nummer liegt. Wenn ich

eingabe

"BB_HHH_FFFF_SSSS", bekomme ich

"bb hhh ffff ssss"

An dieser Stelle lehne ich mich einem Tokenizer-Bug zu, es sei denn, die Anwesenheit der Zahl soll dieses Verhalten haben, aber ich verstehe nicht warum.

Kann jemand das bestätigen?

    
Matt 26.03.2010, 00:44
quelle

2 Antworten

1

Es sieht nicht so aus, als hätten Sie den StandardAnalyzer verwendet, um dieses Feld zu indizieren. In Luke müssen Sie den Analysator auswählen, mit dem Sie dieses Feld indiziert haben, damit MY_VALUE korrekt übereinstimmt.

Sie können MY_VALUE übrigens mit dem KeywordAnalyzer abgleichen.

    
bajafresh4life 26.03.2010, 19:12
quelle
1

Ich denke nicht, dass Sie den Standardanalysator für diesen Anwendungsfall verwenden können.

Beurteilen Sie, was ich denke Ihre Anforderungen sind, sollte der Keyword-Analyzer für wenig Aufwand funktionieren (das ganze Feld wird zu einem einzigen Begriff).

Ich denke, etwas Verwirrung entsteht, wenn man das Feld mit Luke betrachtet. Der gespeicherte Wert ist nicht was von Abfragen verwendet wird, was Sie brauchen, sind die Begriffe. Ich vermute, dass, wenn Sie die für Ihr Feld gespeicherten Begriffe betrachten, sie "mein" und "Wert" sind.

Hoffe, das hilft,

    
Adrian Conlon 31.03.2010 01:18
quelle

Tags und Links