2010-03-26 3 views
8

Wenn ich Luke verwende, um meinen Lucene-Index mit einem Standardanalysator zu suchen, kann ich sehen, dass das Feld, nach dem ich suche, Werte der Form MY_VALUE enthält. Wenn ich nach Feld suche: "MY_VALUE" jedoch wird die Abfrage als Feld analysiert: "mein Wert"Lucene Suche und Unterstriche

Gibt es eine einfache Möglichkeit, den Unterstrich (_) zu entkommen, so dass es danach suchen wird?

EDIT:

4/1/2010 11:08 AM PST

Ich denke, es ist ein Fehler in dem tokenizer für Lucene ist 2.9.1 und es war wahrscheinlich dort vor. up Luke Laden und versuchen, für „BB_HHH_FFFF5_SSSS“, suchen, wenn es eine Zahl ist, werden die folgenden Token zurückgegeben:

„bb hhh_ffff5_ssss“

Nach einigen Tests habe ich festgestellt, dass dies wegen die Nummer. Wenn ich Eingang

„BB_HHH_FFFF_SSSS“, bekomme ich

„bb hhh ffff ssss“

An diesem Punkt bin ich auf eine tokenizer Bug lehnt es sei denn, das Vorhandensein der Zahl soll diese haben Verhalten, aber ich verstehe nicht warum.

Kann jemand das bestätigen?

Antwort

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.

Im Übrigen können Sie MY_VALUE möglicherweise mit dem KeywordAnalyzer abgleichen.

+0

Nein, ich habe den Standard-Analysator als Indexer verwendet, weshalb dies ist seltsam. – Matt

+3

Wenn Sie mit dem Standard Analyzer indiziert haben, enthält Ihr Index "my" und "value" als zwei verschiedene Tokens. Versuchen Sie, nach "meinem Wert" zu suchen (einschließlich der Anführungszeichen) und Sie erhalten möglicherweise Ergebnisse. – Thomas

+0

Ich würde überprüfen, welchen Analysator Sie für die Indizierung verwenden. Wenn Sie den StandardAnalyzer für die Indexierung verwendet haben, ist es unmöglich, MY_VALUE als Ausdruck zu verwenden, da StandardAnalyzer immer auf Unterstriche aufgeteilt wird. – bajafresh4life

1

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

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

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

Hoffe, dies hilft,