最近,我开始使用Lucene。但是,几天后,我发现Lucene将我以String形式提供的查询转换为更通用的查询。

例:

MY QUERY: "want to go" (including " as I'm searching whole phrases)
QUERY OBJECT created from my query (.toString): text:"want ? go"

NUMBER OF RESULTS for texts:
I want to go out today -> 1 result - correct
I want sdfto go out today -> 1 result - incorrect, should be 0


我想匹配执行短语“想去”而不是“想去什么”。我注意到只有单词“ to”和“ a”被替换为“?”。

我的问题是,为什么Lucene会更改我提供的查询,以及如何强制Lucene询问我的查询(未更改)?

此外,我正在使用StandardAnayzer(索引和查询)。

最佳答案

tostop word,这意味着它不会被某些analyzers [包括StandardAnalyzer]索引和搜索,因为它通常对搜索没有用。如果您不希望它被“停止”,则需要使用其他分析器(既用于索引编制又用于搜索),但是它可能会有价值。
您也可以从STOP_WORDS字段中删除单词“ to”

重要提示:您的索引分析器和搜索分析器应保持一致,包括STOP_WORDS字段!

10-07 16:37
查看更多