Lucene.NET中的空间问题C#

时间:2012-09-12 02:59:32

标签: lucene lucene.net

我想在全文搜索中搜索有空格的句子。

Ex:Tom is a very good boy in class. 我想搜索关键词“非常好”。

我正在使用空格标记器来创建/搜索索引。但如果关键字被空格分隔,则找不到关键字。

代码:

 Query searchItemQuery = new WildcardQuery(new Term(string-field-name, searchkeyword.ToLower()));

我尝试过拆分,但效果不正常。

有人建议我解决这个问题吗?

谢谢, 维杰

1 个答案:

答案 0 :(得分:2)

因为,您正在使用标记化字符串,所以每个单词都是一个单独的术语。 为了找到由多个术语组成的短语,您需要使用PhraseQuery而不是WildcardQuery。 像这样:

PhraseQuery phraseQuery = new PhraseQuery();
phraseQuery.Add(new Term(string-field-name, "very"));
phraseQuery.Add(new Term(string-field-name, "good"));

另请注意,您正在使用通配符查询。短语查询中的通配符有点复杂。查看此帖子了解详情:Lucene - Wildcards in phrases

最后,我建议考虑使用QueryParser而不是手动构建查询。