【问题标题】:Ordered proximity search有序邻近搜索
【发布时间】:2011-11-04 00:53:24
【问题描述】:

我的意思是 term1 在文档中总是在 term2 之前。

我有两个文件: 1.“按顺序,我的意思是 term1 在文档中总是在 term2 之前” 2.“按顺序我的意思是 term2 在文档中总是在 term1 之前”

如果我进行查询:

"term1 term2"~Integer.MAX_VALUE

我的结果是:2 个文档

如何查询得到一个结果(仅当 term1 在 term2 之前): “按顺序排列是指 term1 在文档中总是出现在 term2 之前”

有什么想法吗?

【问题讨论】:

    标签: solr lucene solrj solandra


    【解决方案1】:

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

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

    SurroundQueryParser 支持 Span 查询,可以选择查询有序和无序的术语,只需稍微更改语法即可。
    虽然此查询解析器仅适用于主干。

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

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 2012-04-15
      • 2018-04-06
      相关资源
      最近更新 更多