我直接在我的 ASP.NET/C# Web 应用程序中使用 Lucene.NET API。当我使用通配符(如“fuc*”)进行搜索时,荧光笔不会突出显示任何内容,但当我搜索整个单词(如“fuchsia”)时,它会很好地突出显示。 Lucene 是否能够使用与匹配相同的逻辑来突出显示?
以下各种可能相关的代码片段:
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);
然后在每次点击...
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, "...");
我正在使用 QueryParser 和 StandardAnalyzer。
最佳答案
您需要确保将解析器重写方法设置为 SCORING_BOOLEAN_QUERY_REWRITE
。
自从 Lucene v2.9 出现以来,这种改变似乎变得必要了。
希望对您有所帮助,
关于c# - 如何让 Lucene (.NET) 使用通配符正确突出显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837642/