bar*_*rat 12 nested elasticsearch solr-boost
我有一个查询(很好的一部分 - 休息是不重要的像分页):
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"term": {
"is_active": true
}
}
],
"should": [
{
"bool": {
"must": [
{
"nested": {
"path": "skills",
"query": {
"bool": {
"must": [
{
"bool": {
"must": [
{
"range": {
"skills.value": {
"gte": "2"
}
}
},
{
"term": {
"skills.skill.name": "php"
}
}
]
}
}
]
}
}
}
}
],
"boost": 2
}
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是用于搜索配置文件,其具有值为2或更高的技能"PHP".用户可以搜索多个技能=>值对.它工作正常,但我有一个问题:
如何对具有更高技能的匹配技能进行一点推动.值得,只是为了让PHP值为3的人在搜索结果中比使用PHP 2的人更高,即使两者都是正确的匹配.
我建议使用function_score这样做,更具体地说,使用允许在评分计算中使用字段值的field_value_factor函数(带有与字段值相乘的可选因子):
{
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"term": {
"is_active": true
}
}
],
"should": [
{
"nested": {
"path": "skills",
"query": {
"function_score": {
"query": {
"bool": {
"must": [
{
"range": {
"skills.value": {
"gte": "2"
}
}
},
{
"term": {
"skills.skill.name": "php"
}
}
]
}
},
"functions": [
{
"field_value_factor": {
"field": "skills.value",
"factor": 2
}
}
]
}
}
}
}
]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |