如何按顺序遵守Solr条件

ehxuflar  于 2022-10-21  发布在  Solr
关注(0)|答案(1)|浏览(161)

我需要在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。如有任何帮助,请提前感谢!

sbtkgmzw

sbtkgmzw1#

我用变通方法解决了这个问题。我没有设置两个OR条件,而是使用edismaxtitle字段应用了一个有效的提升。
我在Java应用程序中必须更改的是:
从…起

SolrQuery q = new SolrQuery("*");

SolrQuery q = new SolrQuery("(" + query + "*)");

并添加:

q.set("defType", "edismax");
q.set("qf", "title^100");

现在,我没有进行精确的查询,但我先检索匹配度更高的文档,而不更改任何配置!Solr Frontend等价物类似,但查询应如下所示:

http://localhost:8983/solr/mycollection/select?defType=edismax&q=(some%20test*)&qf=title^100

希望它能帮助某人

相关问题