我使用自定义过滤器得分查询,但是在"条款"过滤器被忽略。唯一不被忽视的分数是"脚本"一个在"存在"过滤。我多次查看文档以找到问题,但我没有成功。
这是实际查询:
{
'from': 0,
'query': {
'custom_filters_score': {
'filters': [
{
'filter': {
'exists': {
'field': 'tweet_article_poster'
}
},
'script': "doc['actual_rank'].value/5000.0 + 1.0"
},
{
'boost': '1.3',
'filter': {
'terms': {
'entities.text': [
'Google',
'Twitter',
'Obama',
'NFL'
]
}
}
},
{
'boost': '1.3',
'filter': {
'terms': {
'category': [
'Sports',
'Politics',
'Technology_Internet'
]
}
}
},
{
'boost': '2',
'filter': {
'terms': {
'tweet_article_poster': [
'JoeGumby1',
'BBCSport',
'EyeOnNFL',
'MadeOfWWEAndHTC'
]
}
}
}
],
'query': {
'bool': {
'must': {
'range': {
'added': {
'from': '2013-10-27T00:00:00'
}
}
},
'must_not': {
'term': {
'show': 'false'
}
}
}
},
'score_mode': 'multiply'
}
},
'si
ze':20 }
答案 0 :(得分:0)
我猜是因为你的术语过滤器与任何东西都不匹配,所以没有应用提升。这可能是因为tweet_article_poster
,category
和entities.text
字段在索引编制过程中被“分析”并因此转换为小写,而术语过滤器不执行分析并尝试查找术语按原样。