Estoy usando la API de Lucene.NET directamente en mi aplicación web ASP.NET/C#. Cuando busco usando un comodín, como "fuc *", el resaltador no resalta nada, pero cuando busco la palabra completa, como "fucsia", resalta bien. ¿Lucene tiene la habilidad de resaltar usando la misma lógica con la que solía coincidir?¿Cómo puedo obtener Lucene (.NET) para resaltar correctamente con comodines?
Otros código-fragmentos quizá relevantes siguientes:
var formatter = new Lucene.Net.Highlight.SimpleHTMLFormatter(
"<span class='srhilite'>",
"</span>");
var fragmenter = new Lucene.Net.Highlight.SimpleFragmenter(100);
var scorer = new Lucene.Net.Highlight.QueryScorer(query);
var highlighter = new Lucene.Net.Highlight.Highlighter(formatter, scorer);
highlighter.SetTextFragmenter(fragmenter);
y después de cada golpe ...
string description = Server.HtmlEncode(doc.Get("Description"));
var stream = analyzer.TokenStream("Description",
new System.IO.StringReader(description));
string highlighted_text = highlighter.GetBestFragments(
stream, description, 1, "...");
y estoy usando el QueryParser y la StandardAnalyzer.
Errr ... ¿cómo? Por lo que he visto en los documentos, necesito un MultiTermQuery para meterse con eso, pero solo tengo una consulta. ¿Debería probar el tipo de MultiTermQuery y lanzarlo? –
Probé a ciegas: query = parser.Parse (searchText); if (query.GetType() == typeof (Lucene.Net.Search.PrefixQuery)) { (consulta (Lucene.Net.Search.PrefixQuery)) .SetRewriteMethod (Lucene.Net.Search.PrefixQuery.SCORING_BOOLEAN_QUERY_REWRITE); } y empeoró las cosas. –
En realidad, quise configurar el estilo de reescritura en el analizador. es decir, utilizando el método SetMultiTermRewriteMethod del objeto analizador. HTH –