2010-04-06 5 views
5

Ich versuche, eine Fuzzy-Match auf der Phrase "Grand Prarie" (absichtlich falsch geschrieben) mit Apache Lucene zu tun. Ein Teil meines Problems besteht darin, dass der Operator ~ nur Fuzzy-Matches für Begriffe aus einem einzelnen Wort ausführt und sich als Näherungsübereinstimmung für Phrasen verhält.Lucene Fuzzy Match auf Phrase anstelle von Einzelwort

Gibt es eine Möglichkeit, eine Phrase mit Lucene zu einer Fuzzy-Übereinstimmung zu bringen?

Antwort

2

Es gibt keine direkte Unterstützung für eine Fuzzy-Phrase, aber Sie können sie explizit durch enumerating the fuzzy terms simulieren und dann zu einer MultiPhraseQuery hinzufügen. Die resultierende Abfrage würde wie folgt aussehen:

<MultiPhraseQuery: "grand (prarie prairie)"> 
+0

+1. Der Weg zu gehen – Yaroslav

+2

Könnten Sie ein wenig mehr dazu ausarbeiten? Ich benutze Lucene nicht direkt, sondern durch Solr. Ich kann sehr gut nur Lucene in Aktion lesen zu lesen. Es würde mir nichts ausmachen, besser zu verstehen, wie die beiden zusammenarbeiten und sich auf einer grundlegenderen Ebene damit vertraut machen. Für jetzt, in Solr, erreiche ich etwas, das effektiv genug ist für mich mit dem solr.PhoneticFilterFactory Analyzer. – Koobz

1

Kam über diese durch Google und fühlte sich Lösungen, wo nicht was ich suchte. In meinem Fall war die Lösung einfach die Suchsequenz gegen die Solr-API zu wiederholen. So zum Beispiel, wenn ich suchte: title_t schließen match „Hund ~“ und „cat ~“, fügte ich einige manuelle Code-Abfrage zu erzeugen, wie:

((title_t:dog~) and (title_t:cat~)) 

Es genau das, was oben sein könnte Abfragen sind über, aber Links scheint tot.

+0

Das habe ich gebraucht :) Danke – Oyeme

Verwandte Themen