Tengo un índice relativamente pequeño que contiene alrededor de 4.000 ubicaciones. Entre otras cosas, lo estoy usando para rellenar un campo de autocompletar en un formulario de búsqueda.¿Cómo hacer búsquedas parciales de palabras en Lucene.NET?
Mi índice contiene documentos con un campo de Ubicación que contiene valores como
- Ohio
- Dayton, Ohio
- Dublin, Ohio
- Columbus, Ohio
quiero estar puedo escribir "ohi" y todos estos resultados aparecen y en este momento no aparece nada hasta que escriba la palabra completa "ohio".
estoy usando v2.3.2.1 Lucene.NET y la parte correspondiente de mi código es el siguiente para la creación de mi consulta ....
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);
En resumen, me gustaría conseguir este trabajo como una cláusula LIKE similar a
SELECT * from Location where Name LIKE '%ohi%'
¿Puedo hacer esto con Lucene?
¡Eso hizo el truco! Usted tenía justo lo que necesitaba. /GBT: werd !!! – JamieGaines
Esta respuesta no refleja cómo debería ser el código final. No sé dónde poner esto. ¿Qué tipo es "consulta"? Una muestra final sería genial. – irperez
En Java al menos, debe recortar espacios, ya que la consulta "Prueba *" compilará mientras "Prueba *" no lo hará – bcoughlan