2014-04-30 54 views
0

我写了一些代码,需要在搜索字符串中包含所有单词,例如“Apple is red”。我目前使用MultiFieldQueryParser,但搜索查询将是(标题:“apple?red”body:“apple?red”)。我希望查询看起来应该是什么字符串。 “苹果红”应该变成“苹果红”。我该怎么做?如何创建一个lucene查询

回答

1

您的查询看起来是正确的。输出中的问号表示位置增量,它不表示查询中的实际项。

单词“is”从查询中删除,索引由StandardAnalyzer删除,因为它是默认停用词集中的停用词。 StopFilter将删除这些词语,但会增加表示该词语被删除的位置,以便与词组查询进行更加紧密的匹配。

除非您发现查询的结果存在问题,否则似乎没有任何问题。

+0

无论如何删除它的停止词集? –

+0

[Yes](http://lucene.apache.org/core/4_7_0/analyzers-common/org/apache/lucene/analysis/standard/StandardAnalyzer.html#StandardAnalyzer(org.apache.lucene.util.Version,% 20org.apache.lucene.analysis.util.CharArraySet)) – femtoRgon

+0

谢谢,我看了一下java文档,并在分析器构造函数中添加了一个新的阅读器,它现在可以工作。 –