如果我想搜索关键词"Error Message“,lucene能借给我匹配"Error Message”和"Message Error“的结果吗?目前,我得到的结果只与“错误信息”匹配。我正在使用Standard Analyser和Query Parser来搜索关键字。
发布于 2014-08-21 16:45:47
使用斜率> 0的PhraseQuery。从javadoc
设置查询短语中词之间允许的其他词的数量。如果为零,则这是一个精确的短语搜索。对于较大的值,其工作方式类似于内部或近端运算符。斜率实际上是一个编辑距离,其中的单位对应于查询短语中术语的移位。例如,要切换两个单词的顺序需要两次移动(第一次移动将单词放在另一个单词的顶部),因此要允许对短语进行重新排序,斜率必须至少为两个。
更精确的匹配比更草率的匹配得分更高,因此搜索结果按准确度排序。
默认情况下,斜率为零,需要完全匹配。
发布于 2014-08-21 15:51:20
除了搜索"Error Message“或"Message Error”之外,没有任何方法可以做到这一点。
但是如果你搜索
Title:(Error AND Message)然后,您将获得标题与"Error“和"Message”匹配的所有内容。
尽管,有一个关键点:如果你正在以编程方式构造一个Lucene查询,你真的不应该使用QueryParser。您应该使用QueryBuilder从结构上构造它。QueryParser仅用于用户可能在应用程序中键入的人工生成的查询。
https://stackoverflow.com/questions/25420917
复制相似问题