solr - Solr 中的自定义提升
问题描述
我在搜索应用程序中使用 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
具有最低优先级我尝试bq
使用 Solr 查询添加但没有得到预期的结果
/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
谢谢
解决方案
我解决了这个问题
添加
&defType=edismax
添加我的多个
bq
参数增加分数之间的差距
/select?bq=d_type:ds4^500&bq=d_type:ds5^400&bq=d_type:ds1^300&bq=d_type:ds3^200&bq=d_type:ds2^100&defType=edismax
推荐阅读
- python - 如何在python中编写一个函数来总结一组给定的数字而不是它自己?
- django - Django负载测试使用蝗虫给出Csrf令牌错误
- python - Python 正则表达式非捕获组
- python-3.x - 使用 Scatter_Update 更新张量
- java - SPRING /JPA - JPQL 和 Hibernate - 存储库 - 我可以对子元素设置条件吗?
- many-to-many - 在仅 Rails API 的应用程序中获取聊天消息
- php - 无法使用用户名和密码连接到数据库
- java - 在JavaFX中同时进行场景和舞台交互
- javascript - 编码建议:dom 操作 - 将文本拆分为动态范围
- laravel - 在 Laravel 中单击更改页面的一部分