1

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

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

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

代码:

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

我试过拆分,但它不能正常工作。

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

谢谢,维杰

4

1 回答 1

2

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

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

另请注意,您正在使用通配符查询。短语查询中的通配符有点复杂。查看这篇文章了解详细信息:Lucene - 短语中的通配符

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

于 2012-09-12T08:23:00.327 回答