我经常使用Solr的邻近搜索来搜索彼此指定范围内的单词,如此
"Government Spending" ~2
我想知道有没有办法使用短语和一个或两个短语来执行邻近搜索。这可能吗?如果是这样的语法是什么?
答案 0 :(得分:16)
这似乎“有点”可行。请考虑以下文字:
This is more about traffic between Solr servers themselves
"more traffic between solr" ~2
即使您更改了它的工作顺序:
"more about solr between" ~2" ~2
但相隔太远而且它停止工作:
"more about servers themselves" ~2
我认为如果这不起作用,那么创建一个自定义请求处理程序可能不会太难。我认为你可能需要定义一个新的语法,例如("phrase one" "phrase two") ~2
。我猜想如果你是乱七八糟的,你创建了一个Lucene查询,其中只有一个“短语一”的标记和另一个具有一定接近度的“短语二”,我认为它会起作用。 (当然你需要实际进行lucene java调用,你不能只是把查询交给它(阅读这个http://lucene.apache.org/java/2_2_0/api/index.html))。
答案 1 :(得分:11)
开箱即用我发现了一种使用多个单词或短语执行Solr邻近搜索的方法,见下文
例如。用3个字:
“(word1)(word2)(word3)”~10
例如。有两个短语:(注意双引号需要转义)
“(\”phrase1 \“)(\”phrase2 \“)”~10
答案 2 :(得分:7)
从Solr 4开始,可以SurroundQueryParser。
E.g。查询“短语二”后面的“短语一”不超过3个单词:
3W(phrase W one, phrase W two)
在“短语一”的5个单词附近查询“短语二”:
5N(phrase W one, phrase W two)