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