我正在尝试提高Solr搜索返回文档的得分。
我想要实现的加权是这样的:
field1:(value1)^5 OR field2:(value2)^2
如果文档中有字段1与值1匹配,则提高5倍。 如果文档中有字段2与值2匹配,则提高2倍。
这些文档有许多字段,我们称之为字段1、字段2等,可能缺少某些字段。
这些文档不需要具有与值1、值2相匹配的字段1或字段2。
我还有其他过滤查询,例如:
fq: field1:[* TO *] <- checking for presence of
fq: field3: ("something" "somethingelse")
fq: field4: 1
我正在按照某个在任何查询中都未使用的字段对结果进行分组。
原始查询参数:
group=true&group.facet=true&group.field=anIndependentField
我正在使用相同的fq,尝试了不同的查询解析器。
Solr中有足够的文档,其中包含field1:value1和/或field2:value2以及这些字段的其他值。
到目前为止,我尝试使用以下查询解析器:
- 标准查询解析器
方法a)q:field1:(value1)^5 OR field2:(value2)^2 //没有结果
方法b)q:*:* OR field1:(value1)^5 OR field2:(value2)^2 //没有结果
方法c)q:(value1)^5 OR (value2)^2 //不正确。寻找完全匹配。
方法d)q:(value1)^5 (value2)^2 //不正确。寻找完全匹配。
- EDisMax查询解析器
(defType=edismax)
q:*:*
bq: field1:(value1)^5 OR field2:(value2)^2
这个问题的关键在于结果并不是按照预期的顺序排序的。一个包含field1:somethingElse和field2:somethingElse2的文档得到的评分比一个包含field1:somethingElse和field2:value2的文档的评分要高。
有没有人能够看出我做错了什么或者有任何建议来提高我的搜索查询的相关性?
bq
参数吗?&bq=field1:value1^5&bq=field2:value2^2
- MatsLindh