我的Solr
中有一份商业文件清单。每个企业都有一个位置,一个评级和多个折扣计划。现在,我使用Solr
为每个用户建议最佳评级和最近的业务。它很棒。
我的计划是为搜索查询添加折扣。
每家企业都有4个折扣计划
Biz1 ====> Paln0=0%, Plan1=5%, Plan2=10%, Plan3=15%
Biz2 ====> Plan0=0%, Plan1=2%, Plan2=5%, Plan3=7%
此数据保存在Solr
个文档中。
每个用户都有自己的折扣计划
User1 ===> Biz1=Plan1, Biz2=Plan3
User2 ===> Biz1=Plan3, Biz2=Plan2
此数据保存在我的数据库中。
我想为Solr
分数添加折扣,但对于每个用户,此折扣都不同!简单地说,通过从分数中删除位置和评分,它只会是折扣,上述User1
和User2
示例的结果必须是:
User1
1-Biz2 7%
2-Biz1 5%
User2
1-Biz1 15%
2-Biz2 5%
我的问题在Solr
或Elasticsearch
上有解决方法吗?
答案 0 :(得分:1)
这里有两个问题:
第一个问题可以通过查询数据库来解决您的业务问题=>计划查询。 第二个可以通过ElasticSearch的功能得分来解决。
您可以推广具有其中一个计划的业务单据。
{
"query": {
"function_score": {
"query": {},
"functions": [
{
"filter": {
"bool": {
"should": [
{
"exists": {
"field": "plan0"
}
}
]
}
},
"weight":5
},
{
"filter": {
"bool": {
"should": [
{
"exists": {
"field": "plan1"
}
}
]
}
},
"weight":10
}
]
}
}
}