我正在使用Lucene.net在Asp.net應用程序中實現全文搜索功能。搜索結果頁面應該高亮顯示匹配項目。我得到了Lucene.Net.Search.Hits的實例,並使用.Doc(int i)方法來獲取Lucene Document。我們可以在Lucence.net搜索結果中獲得匹配項的位置嗎?
但我不知道如何通過一些Lucene類的現有方法或屬性來獲得匹配項的位置。 Lucene.net是否提供了支持高亮查詢字符串的功能?
我正在使用Lucene.net在Asp.net應用程序中實現全文搜索功能。搜索結果頁面應該高亮顯示匹配項目。我得到了Lucene.Net.Search.Hits的實例,並使用.Doc(int i)方法來獲取Lucene Document。我們可以在Lucence.net搜索結果中獲得匹配項的位置嗎?
但我不知道如何通過一些Lucene類的現有方法或屬性來獲得匹配項的位置。 Lucene.net是否提供了支持高亮查詢字符串的功能?
您可以使用Highlighter
或FastVectorHighlighter
可以在contrib
正如前面說回答者中找到,你應該使用熒光筆或FastVectorHighlighter從contrib請。
下面是使用熒光筆lib中獲得突出片段的例子:
Formatter formatter = new SimpleHTMLFormatter("<span><b>", "</b></span>");
Lucene.Net.Highlight.Scorer scorer = new QueryScorer(query, field);
Lucene.Net.Highlight.Encoder encoder = new SimpleHTMLEncoder();
var highlighter = new Highlighter(formatter, encoder, scorer);
highlighter.SetTextFragmenter(new SimpleFragmenter(100));
string[] fragments =
highlighter.GetBestFragments(DefaultAnalyzer, field, doc.Get(field), 3);
一些熒光筆相關陷阱:
要突出一個領域,它應該被添加到索引中Field.Store.YES
選項
在將您的查詢傳遞給熒光筆之前,應將其重寫
'要突出一個領域,它應該被添加到索引中Field.Store.YES option'你並不需要如果您計劃突出顯示諸如原始(文本)文件索引的extarnal源文件,則存儲該文件。 –
@ L.B。如果您想突出顯示文檔字段的文本並且不知道這樣的熒光筆要求,它可能是一個陷阱。 – buru