【发布时间】:2020-10-27 20:38:38
【问题描述】:
我在一个搜索应用程序中使用 Solr,其中数据被划分为不同的类型,但在同一个集合中。集合中的每个文档都有d_type 字段,用于定义数据的类型。
例子
假设我有 5 种类型的数据
d_type=ds1
d_type=ds2
d_type=ds3
d_type=ds4
d_type=ds5
我想根据用户偏好应用提升。我已针对每个用户将用户首选项存储在其他集合中。 现在在运行时我调用用户首选项集合并获取对象中登录用户的首选项 即
{
"1" : "ds4",
"2" : "ds5",
"3" : "ds1",
"4" : "ds3",
"5" : "ds2",
}
ds4 的优先级最高,ds2 的优先级最低
我尝试使用 Solr 查询添加 bq,但没有得到预期结果
/select?bq=d_type:ds4^5+d_type:ds5^4+d_type:ds1^3+d_type:ds3^2+d_type:ds2^1
以上查询未按预期工作。请告诉我这里出了什么问题。
solr 版本:7.7.2
谢谢
【问题讨论】:
-
首先查看查询的调试输出 - 将
debug=all附加到查询字符串,它会准确地告诉您每个文档的分数是如何计算的。你的提升因子可能太小而无法做任何有用的事情,而那些你期望得到更多提升的初始分数太低,无法让提升改变任何事情。在这种情况下,您需要调整提升因子;您也可以考虑改用boost- 因为这是乘法提升(乘以分数),而不是bq是加法(添加到分数)。你也可以使用多个bq的
标签: solr solr-query-syntax solr-boost