如果没有找到匹配,我的查询中有人气排名。我每周都会根据上个月访问过该文档的次数来计算popRank
字段。这意味着并非所有文档都有popRank
,只有上个月访问过的文档。
下面的查询不适用于must
子句,即使有些项目包含该类别
GET /index/docs/_search
{
"size": 10,
"query": {
"bool": {
"should": [{
"terms": {
"body": [<array of keyword strings>]
}
}, {
"constant_score": {
"filter": {
"match_all": {}
},
"boost": 0
}
}],
"must": [{
"terms": {
"category": ["DIY"],
"boost": 0
}
}],
"minimum_should_match": 1
}
},
"sort": [{
"_score": {
"order": "desc"
}
}, {
"popRank": {
"unmapped_type": "double",
"order": "desc"
}
}]
}
如果should
子句已满足,则此查询应返回结果文档,否则则流行度排名将接管,在任何一种情况下都必须按类别进行过滤。如果match_all
以外的其他内容返回结果,但仅在match_all
返回结果时不起作用,则此方法有效。
这是一个示例文档。
{
"_index": "index",
"_type": "docs",
"_id": "Fridays",
"_score": 1,
"_source": {
"id": "Fridays",
"body": "text...",
"category": [
"DIY",
"Kitchen"
],
"popRank": 1
}
}