簡體   English   中英

如何使用通配符正確地突出顯示Lucene(.NET)?

[英]How do I get Lucene (.NET) to highlight correctly with wildcards?

我在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出現以來,這種變化似乎已經變得必要了。

希望這可以幫助,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM