Solr提升特定字段值
我正在努力提高solr中搜索返回的文档的分数 我想要实现的提升是以下几点:Solr提升特定字段值,solr,solr5,Solr,Solr5,我正在努力提高solr中搜索返回的文档的分数 我想要实现的提升是以下几点: field1:(value1)^5 OR field2:(value2)^2 如果文档确实有字段1匹配值1,则增加5。 如果文档确实有字段2匹配值2,则增加2。 文档有很多字段,我们把它们叫做field1,field2。。。并且可能缺少某些字段 文档不需要字段1或字段2分别与值1、值2匹配 我还有其他过滤器查询,例如: fq: field1:[* TO *] <- checking for presence
field1:(value1)^5 OR field2:(value2)^2
如果文档确实有字段1匹配值1,则增加5。
如果文档确实有字段2匹配值2,则增加2。
文档有很多字段,我们把它们叫做field1,field2。。。并且可能缺少某些字段
文档不需要字段1或字段2分别与值1、值2匹配
我还有其他过滤器查询,例如:
fq: field1:[* TO *] <- checking for presence of
fq: field3: ("something" "somethingelse")
fq: field4: 1
我对不同的查询解析器使用相同的fq
solr中有足够多的文档包含field1:value1和/或field2:value2以及这些字段的其他值
到目前为止,我已经尝试使用查询解析器:
bq: field1:(value1)^5 OR field2:(value2)^2
这一个的问题是,结果并没有按预期的顺序排列。
具有字段1:somethingElse和字段2:somethingElse的文档比具有字段1:somethingElse和字段2:value2的文档得分更高
有人知道我做错了什么,或者有人建议改进我的搜索查询的相关性吗?您可以通过以下方式使用eDismax queryParser的bf参数:
bf=if(termfreq(field1,"value1"),5,if(termfreq(field2,"value2"),2,1))
请在下面找到完整的查询
https://<MY_SERVER_NAME>:9443/solr/<MY_COLLECTION>/select?q=*%3A*&wt=json&indent=true&defType=edismax&bf=if(termfreq(field1%2C%22value1%22)%2C3%2Cif(termfreq(field2%2C%22value2%22)%2C2%2C0))
https://:9443/solr//select?q=*%3A*&wt=json&indent=true&defType=edismax&bf=if(termfreq(field1%2C%22value1%22)%2C3%2Cif(termfreq(field2%2C%22value2%22)%2C2%2C0))
您是否尝试过拆分bq
参数<代码>&bq=field1:value1^5&bq=field2:value2^2
https://<MY_SERVER_NAME>:9443/solr/<MY_COLLECTION>/select?q=*%3A*&wt=json&indent=true&defType=edismax&bf=if(termfreq(field1%2C%22value1%22)%2C3%2Cif(termfreq(field2%2C%22value2%22)%2C2%2C0))