Frage

Ich habe eine Menge Ärger Umgang mit Lucene des Ähnlichkeitsfaktor. Ich will es einen Ähnlichkeitsfaktor anders als der Standard anzuwenden (die 0,5 nach Dokumentation ist), aber es scheint nicht zu funktionieren.

Wenn ich eine Abfrage eingeben, die explizit den erforderlichen Ähnlichkeitsfaktor setzt, wie [tinberland ~ 0.5] (man beachte, dass ich schrieb tiNberland, mit einem „N“, während die richtigen mit einem „M“ wäre), bringt es viele Produkte von den Timber Herstellern. Aber wenn ich nur [tinberland] -Typ (kein Ähnlichkeitsfaktor explizit definiert) und versucht, die Ähnlichkeit über Code zu setzen, es funktioniert nicht (liefert keine Ergebnisse).

Der Code, den ich schrieb die Ähnlichkeit zu setzen wie:

multiFieldQueryParser.SetFuzzyMinSim(0.5F);

Und ich habe nicht die Ähnlichkeit Algorithmus ändern, so dass es die DefaultSimilarity Klasse verwendet wird.

Ist das nicht der richtige oder empfohlene Weg Ähnlichkeit über den Code der Anwendung? Gibt es eine spezielle QueryParser für Fuzzy-Abfragen?

Jede Hilfe ist sehr geschätzt. Vielen Dank im Voraus!

War es hilfreich?

Lösung

Was Sie Einstellung sind, ist die minimale Ähnlichkeit, so z.B. wenn jemand für foo~.1 der Parser gesucht würde es foo~.5 ändern. Es sagt nicht „jede Abfrage in eine Fuzzy-Abfrage machen.“

Sie können mit MultiFieldQueryParser.getFuzzyQuery etwa so:

Query q = parser.getFuzzyQuery(field, term, minSimilarity);

, aber das wird natürlich benötigen Sie getFuzzyQuery für jedes Feld aufrufen. Ich bin mir nicht bewusst eine „MultiFieldFuzzyQueryParser“ Klasse, aber alle es tun würde, ist nur ein paar dieser getFuzzyQuery Anrufe verbinden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top