6
我在我的ASP.NET/C# web应用程序中直接使用Lucene.NET API。当我使用通配符进行搜索时,如“fuc *”,荧光笔不会突出显示任何内容,但是当我搜索整个单词时,如“紫红色”,它会突出显示。 Lucene是否有能力使用与之相匹配的相同逻辑来突出显示?如何让Lucene(.NET)使用通配符正确突出显示?
各种可能相关的下面的代码片段:
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。
错误......怎么回事?从我在文档中看到的,我需要一个MultiTermQuery来解决这个问题,但我只有一个Query。我应该测试typeof MultiTermQuery并投射吗? – 2010-05-18 13:42:44
我一味地尝试过: query = parser.Parse(searchText); ((Lucene.Net.Search.PrefixQuery)query).SetRewriteMethod(Lucene.Net.Search.PrefixQuery.SCORING_BOOLEAN_QUERY_REWRITE);如果(query.GetType()== typeof(Lucene.Net.Search.PrefixQuery)) {(Lucene.Net.Search.PrefixQuery)query)。 } 它让事情变得更糟。 – 2010-05-18 13:49:20
我的意思是在解析器上设置重写样式。即使用解析器对象的SetMultiTermRewriteMethod方法。 HTH – 2010-05-18 17:46:18