有序邻近搜索

时间:2011-11-04 00:53:24

标签: solr lucene solrj solandra

按顺序,我的意思是term1将始终位于文档中的term2之前。

我有两份文件: 1.“按顺序,我的意思是term1将始终在文档中的term2之前” 2.“通过命令,我的意思是term2将始终位于文档中的term1之前”

如果我进行查询:

"term1 term2"~Integer.MAX_VALUE

我的结果是:2个文件

如何查询有一个结果(仅当term1在term2之前): “按顺序,我的意思是term1将始终位于文档中的term2之前”

任何想法?

2 个答案:

答案 0 :(得分:1)

您需要使用SpanNearQuery
这匹配彼此靠近的跨度。可以指定slop,干预不匹配位置的最大数量,以及匹配是否需要按顺序

但是,使用Solr的dismax和edismax查询解析器使用短语查询,因此匹配始终是无序的。

SurroundQueryParser支持Span查询,可以选择对有序和无序术语进行查询,语法略有变化。
虽然此查询分析程序仅适用于主干。

更多信息@ http://www.lucidimagination.com/blog/2009/02/22/exploring-query-parsers/

答案 1 :(得分:0)