我们可以在Lucence.net搜索结果中获得匹配项的位置吗?

时间:2011-11-10 08:26:58

标签: lucene.net highlight

我正在使用Lucene.net在Asp.net应用程序中实现全文搜索功能。搜索结果页面应高亮显示匹配项。我得到了Lucene.Net.Search.Hits的实例,并使用.Doc(int i)方法获取Lucene Document。

但我不知道如何通过某些Lucene类的现有方法或属性来获取匹配项的位置。 Lucene.net是否提供支持高亮度查询字符串的任何功能?

2 个答案:

答案 0 :(得分:1)

您可以使用contrib

中的HighlighterFastVectorHighlighter

答案 1 :(得分:0)

正如之前的回答者所说,你应该使用来自contrib的Highlighter或FastVectorHighlighter。

以下是使用Highlighter 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选项的索引

  • 在将查询传递给荧光笔

  • 之前,应重写您的查询
  • 传递给荧光笔的分析仪应与您用于索引和搜索的分析仪相同