使用荧光笔突出显示短语查询

时间:2009-03-17 06:53:18

标签: c# lucene lucene.net

使用了this版本的Lucene highlighter.net API。 我希望只有当搜索结果中出现所有单词时才会突出显示一个短语。但是,我无法这样做....例如,如果我的输入搜索字符串是“领先的电信公司”,那么如果结果不包含“领先”和“公司”字样,API仅在结果中突出显示“电信”......

以下是我正在使用的代码:

SimpleHTMLFormatter htmlFormatter = new SimpleHTMLFormatter();

var appData = (string)AppDomain.CurrentDomain.GetData("DataDirectory");
var folderpath = System.IO.Path.Combine(appData, "MyFolder");

indexReader = IndexReader.Open(folderpath);

Highlighter highlighter = new Highlighter(htmlFormatter, new QueryScorer(finalQuery.Rewrite(indexReader)));

highlighter.SetTextFragmenter(new SimpleFragmenter(800));

int maxNumFragmentsRequired = 5;

string highlightedText = string.Empty;

TokenStream tokenStream = this._analyzer.TokenStream(fieldName, new System.IO.StringReader(fieldText));

highlightedText = highlighter.GetBestFragments(tokenStream, fieldText, maxNumFragmentsRequired, "...");

return highlightedText;

请帮忙!

2 个答案:

答案 0 :(得分:1)

看一下highlighters unit test - 你的用例可能就在那里。

答案 1 :(得分:0)

查看this question的答案。就像现在一样,荧光笔不理解短语查询。它只使用QueryTermExtractor并获取要突出显示的单词列表。