search - Solr接近度有序与无序

标签 search lucene solr proximity

在 Solr 中,您可以使用语法执行有序的邻近搜索

"word1 word2"~10

按顺序,我的意思是 word1 将始终出现在文档中的 word2 之前。我想知道是否有一种简单的方法来执行无序的邻近搜索,即。 word1 和 word2 出现在彼此的 10 个单词之内,哪个先出现并不重要。

一种方法是:
"word1 word2"~10 OR "word2 word1"~10

上面的方法可行,但如果可能的话,我正在寻找更简单的方法。

最佳答案

Slop 表示可以发生多少个单词换位。所以“a b”将与“b a”不同,因为允许不同数量的换位。

  • a foo b有位置 (a,1), (foo, 2), (b, 3)。要匹配 (a,1), (b,2) 将需要一个更改: (b,2) => (b,3)
  • 但是,要匹配 (b,1)、(a,2),您将需要 (a,2) => (a,1) 和 (b,1) => (b,3),总共三个位置机芯

  • 一般来说,如果"a b"~n匹配某些内容,然后 "b a"~(n+2)也会匹配。

    编辑:我想我从未给出答案。我看到两个选项:
  • 如果您想要 n 的斜率,请将其增加到 n+2
  • 按照您的建议手动分离您的搜索

  • 我认为 #2 可能更好,除非你的斜率一开始就很大。

    关于search - Solr接近度有序与无序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4079388/

    相关文章:

    lucene - Umbraco V6.1.3 Lucene 索引损坏

    solr - Apache Solr TermsComponent : How to prevent from splitting words after one character. 例如 "t-shirt"

    c - 在文本文件 C 中搜索字符串

    java - 快速搜索,无需标记化

    java - 在包含特定项目名称的类的数组列表中搜索

    java - 当结果是一条记录时,Hibernate Search/Lucene 返回 null 元素

    mysql - 海量数据查询SOLR

    solr - 抓取网页后识别产品,进行价格比较

    java - Elasticsearch 中的精确匹配

    search - Solr 中按自定义分数排序的排序不一致