Sto usando l'API Lucene.NET direttamente nella mia applicazione web ASP.NET/C#. Quando cerco utilizzando un carattere jolly, come "fuc *", l'evidenziatore non evidenzia nulla, ma quando cerco l'intera parola, come "fucsia", si evidenzia bene. Lucene ha la capacità di evidenziare usando la stessa logica con cui è stato utilizzato?Come si ottiene Lucene (.NET) per evidenziare correttamente con i caratteri jolly?
Vari forse rilevanti code-frammenti di seguito:
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);
e quindi su ogni colpo ...
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, "...");
E sto usando il QueryParser e la. StandardAnalyzer
Errr ... come? Da quello che ho visto nei documenti, ho bisogno di un MultiTermQuery per pasticciarlo, ma ho solo una query. Devo testare per il tipo di MultiTermQuery e il cast? –
Ho provato alla cieca: query = parser.Parse (searchText); if (query.GetType() == typeof (Lucene.Net.Search.PrefixQuery)) { (query Lucene.Net.Search.PrefixQuery)) .SetRewriteMethod (Lucene.Net.Search.PrefixQuery.SCORING_BOOLEAN_QUERY_REWRITE); } e ha peggiorato le cose. –
In realtà intendevo impostare lo stile di riscrittura sul parser. Ad esempio, utilizzando il metodo SetMultiTermRewriteMethod dell'oggetto parser. HTH –