我需要在OR中使用两个条件向Solr发送查询,而不是发送两次查询:
{!complexphrase inOrder=true}title:"some tests*" || title:(some tests*)
..其中,在第一个条件下,我想要精确的结果。如果找不到,则转到OR并检索搜索短语中至少有一个单词的任何结果。但当我启动查询时,我仍然会首先得到正确的条件结果。
以下是我的数据:
{
"title": "some values"
},
{
"title": "data tests"
},
{
"title": "some tests"
}
我需要的回应是:
{
"title": "some tests"
},
{
"title": "data tests"
},
{
"title": "some values"
}
我已经尝试过使用boosting,比如:{!complexphrase inOrder=true}title:"some tests*"^2 || title:(some tests*)^1
,但没有成功。我无法更改Solr配置,因为它是一个已经在生产中的软件,不由我管理。我甚至无法按评级排序,事实上我没有先收到最佳结果。Solr版本是7.3.1。如有任何帮助,请提前感谢!
1条答案
按热度按时间sbtkgmzw1#
我用变通方法解决了这个问题。我没有设置两个OR条件,而是使用
edismax
对title
字段应用了一个有效的提升。我在Java应用程序中必须更改的是:
从…起
到
并添加:
现在,我没有进行精确的查询,但我先检索匹配度更高的文档,而不更改任何配置!Solr Frontend等价物类似,但查询应如下所示:
希望它能帮助某人