Proximity使用Solr中的短语进行搜索

Rut*_*uth 13 search solr proximity

我经常使用Solr的邻近搜索来搜索彼此指定范围内的单词,就像这样

"Government Spending" ~2
Run Code Online (Sandbox Code Playgroud)

我想知道有没有办法使用短语和一个或两个短语来执行邻近搜索.这可能吗?如果是这样,语法是什么?

mla*_*the 16

这看起来"有点"可行.考虑这个文字:

This is more about traffic between Solr servers themselves 
Run Code Online (Sandbox Code Playgroud)

"solr之间的流量更多"~2

"更多关于solr之间的事情"~2

即使你改变它的工作顺序:

"更多关于solr之间的"~2"~2

但相隔太远而且它停止工作:

"更多关于服务器本身"~2

我认为如果这不起作用,那么创建一个自定义请求处理程序可能不会太难.我想你可能需要定义一个新的语法,或许类似于("phrase one" "phrase two") ~2.我猜想如果你是乱七八糟的,你创建了一个Lucene查询,其中只有一个"短语一"的标记和另一个具有一定接近度的"短语二",我认为它会起作用.(当然你需要实际进行lucene java调用,你不能只是把查询交给(阅读http://lucene.apache.org/java/2_2_0/api/index.html)).


Rut*_*uth 11

开箱即用,我发现了一种使用多个单词或短语执行Solr邻近搜索的方法,见下文

例如.用3个字:

"(word1)(word2)(word3)"~10

例如.有两个短语:(注意双引号需要转义)

"(\"phrase1 \")(\"phrase2 \")"~10


And*_*rey 7

从Solr 4开始,可以使用SurroundQueryParser.

例如,查询"短语二"后面的"短语一"不超过3个单词:

3W(phrase W one, phrase W two)
Run Code Online (Sandbox Code Playgroud)

要在"短语一"的5个单词附近查询"短语二":

5N(phrase W one, phrase W two)
Run Code Online (Sandbox Code Playgroud)