在 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) 一般来说,如果
"a b"~n
匹配某些东西,那么 "b a"~(n+2)
也会匹配它。编辑:我想我从未给出答案。我看到两个选项:
我认为#2 可能更好,除非你的斜率一开始就很大。
关于search - Solr接近度有序与无序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4079388/