我经常使用Solr的相似搜索来搜索一定范围内的单词,比如:
"Government Spending" ~2
我想知道是否有一种方法可以使用短语和一个单词或两个短语进行近似搜索。这可行吗?如果可以,那么语法是什么?
这似乎是“有点”可行的。考虑一下这段文本:
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查询,其中有一个仅为“phrase one”的标记和另一个为“phrase two”的标记,两者之间具有某种接近度,那么它将起作用。(当然,您需要实际进行Lucene Java调用,不能仅仅将查询交给它(阅读此内容:http://lucene.apache.org/java/2_2_0/api/index.html)。)
开箱即用,我已经发现了一种使用多个词或短语执行Solr接近搜索的方法,请参见下面:
例如,使用3个单词:
"(word1) (word2) (word3)"~10
例如,使用2个短语:(请注意,双引号需要转义)
"(\"phrase1\") (\"phrase2\")"~10
3W(phrase W one, phrase W two)
5N(phrase W one, phrase W two)
"(\"cord power\") (\"dock\")"~10
搜索示例“techproducts”数据,即使术语“cord power”未出现在文档中,也会返回一个命中,而“power cord”确实出现。 - user9712582