如果我想搜索关键字"错误消息" ,lucene能否借给我匹配的结果"错误信息"和"消息错误"。 Currenlty我得到的结果匹配"错误消息"只要。我正在使用标准分析器和查询分析器来搜索关键字。
答案 0 :(得分:1)
使用带有slop>的PhraseQuery
0.从javadoc:
设置查询中单词之间允许的其他单词数 短语。如果为零,那么这是一个精确的短语搜索。对于更大 这个值就像一个WITHIN或NEAR运算符。事实上,这是一个污点 编辑距离,其中单位对应于中的术语移动 查询短语不在位置。例如,要切换两个的顺序 单词需要两个动作(第一个动作将单词放在一个上面 另一个),所以为了允许重新排序短语,slop必须在 至少两个。
因此,更精确的匹配得分高于更粗略的匹配 搜索结果按精确度排序。
默认情况下,slop为零,需要完全匹配。
答案 1 :(得分:0)
除了搜索“错误消息”或“消息错误”之外,没有任何其他方法可以做到这一点。
但是如果你搜索
Title:(Error AND Message)
然后你会得到标题匹配“错误”和“消息”的所有内容。
一个关键点,但:如果您是以编程方式构建Lucene查询,那么您真的不应该使用QueryParser
。您应该使用QueryBuilder
从结构上构建它。 QueryParser
仅适用于用户可能在您的应用程序中输入的人工生成的查询。