Ich habe einen relativ kleinen Index mit rund 4.000 Standorten. Unter anderem verwende ich es, um ein Autocomplete-Feld in einem Suchformular zu füllen.Wie werden Teilwortsuchen in Lucene.NET durchgeführt?
Mein Index enthält Dokumente mit einem Feld Location Werte wie
- Ohio
- Dayton, Ohio
- Dublin, Ohio
- Columbus, Ohio
ich sein will Ich bin in der Lage, "ohi" einzutippen und alle diese Ergebnisse erscheinen zu lassen und im Moment gibt es nichts, bis ich das ganze Wort "ohio" eintippe.
Ich verwende Lucene.NET v2.3.2.1 und der relevante Teil meines Codes ist wie für die Einrichtung meiner Anfrage folgt ....
BooleanQuery keywords = new BooleanQuery();
QueryParser parser = new QueryParser("location", new StandardAnalyzer());
parser.SetAllowLeadingWildcard(true);
keywords.Add(parser.Parse("\"*" + location + "*\""), BooleanClause.Occur.SHOULD);
luceneQuery.Add(keywords, BooleanClause.Occur.MUST);
Kurz gesagt, würde Ich mag an bekomme das funktioniert wie eine LIKE-Klausel ähnlich wie
SELECT * from Location where Name LIKE '%ohi%'
Kann ich das mit Lucene tun?
Das hat den Trick gemacht! Du hattest genau das, was ich brauchte. /GBT: werd !!! – JamieGaines
Diese Antwort gibt nicht an, wie der endgültige Code aussehen sollte. Ich weiß nicht, wo ich das hinstellen soll? Welcher Typ ist "Abfrage"? Eine letzte Probe wäre großartig. – irperez
In Java zumindest, sollten Sie Leerzeichen trimmen, wie die Abfrage "Test *" kompilieren wird, während "Test *" nicht – bcoughlan