我试图过滤我的结果“publication_year”字段,但我不希望它影响文档的分数,但如果我添加“范围”到查询或“过滤器”,它似乎会影响分数和评分较高的文档,其“publication_year”更接近“lte”或“小于等于”的上限在“范围”。
我的疑问:
query = {
'bool': {
'should': [
{
'match_phrase': {
"title": keywords
}
},
{
'match_phrase': {
"abstract": keywords
}
},
]
}
}
if publication_year_constraint:
range_query = {"range":{"publication_year":{"gte":publication_year_constraint, "lte": datetime.datetime.today().year}}}
query["bool"]["filter"] = [range_query]
尝试将“range”也放在“should”块中,结果类似。
1条答案
按热度按时间bvpmtnay1#
尝试使用"筛选器上下文"。
在筛选器上下文中,查询子句会回答"此文档是否与此查询子句匹配?"问题,答案很简单:是或否-不计算分数。
示例: