我想在全文搜索中搜索有空格的句子。
Ex:Tom is a very good boy in class.
我想搜索关键词“非常好”。
我正在使用空格标记器来创建/搜索索引。但如果关键字被空格分隔,则找不到关键字。
代码:
Query searchItemQuery = new WildcardQuery(new Term(string-field-name, searchkeyword.ToLower()));
我尝试过拆分,但效果不正常。
有人建议我解决这个问题吗?
谢谢, 维杰
答案 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而不是手动构建查询。