2011-11-10 44 views
0

我正在使用Lucene.net在Asp.net應用程序中實現全文搜索功能。搜索結果頁面應該高亮顯示匹配項目。我得到了Lucene.Net.Search.Hits的實例,並使用.Doc(int i)方法來獲取Lucene Document。我們可以在Lucence.net搜索結果中獲得匹配項的位置嗎?

但我不知道如何通過一些Lucene類的現有方法或屬性來獲得匹配項的位置。 Lucene.net是否提供了支持高亮查詢字符串的功能?

回答

1

您可以使用HighlighterFastVectorHighlighter可以在contrib

0

正如前面說回答者中找到,你應該使用熒光筆或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選項

  • 在將您的查詢傳遞給熒光筆之前,應將其重寫

  • 傳遞給熒光筆分析器應該是你用於索引相同和搜索
+0

'要突出一個領域,它應該被添加到索引中Field.Store.YES option'你並不需要如果您計劃突出顯示諸如原始(文本)文件索引的extarnal源文件,則存儲該文件。 –

+0

@ L.B。如果您想突出顯示文檔字段的文本並且不知道這樣的熒光筆要求,它可能是一個陷阱。 – buru

相關問題