0
我有一個查詢,像這樣:Elasticsearch排序
{
"sort": [
{
"_geo_distance": {
"geo": {
"lat": 39.802763999999996,
"lon": -105.08748399999999
},
"order": "asc",
"unit": "mi",
"mode": "min",
"distance_type": "sloppy_arc"
}
}
],
"query": {
"bool": {
"minimum_number_should_match": 0,
"should": [
{
"match": {
"name": ""
}
},
{
"match": {
"credit": true
}
}
]
}
}
}
我想我的搜索總是返回所有結果,剛剛整理與那些有匹配的標誌更靠前。
我想分類優先級去是這樣的:
- SEARCHTERM(姓名,字符串)
- 標誌(信用卡/ ATM/ADA /等,布爾值)
- 距離
這是如何實現的?
到目前爲止,您在上面看到的查詢是我所得到的。我一直無法弄清楚如何總是返回所有結果,也不知道如何將附加查詢合併到排序中。
您的要求有點混亂。你說那些「有匹配的標誌」應該是「更接近頂部」。但是,您的排序優先級將「名稱」作爲排序標準。那麼,它應該首先找到所有匹配的名稱,然後考慮匹配標誌的數量(更多匹配標誌越好)?假設你想要搜索一家銀行分行 - 你想要的名字比分行具有「信用」功能,「atm」功能的事實更匹配?或者你想找到具有「良好」名稱和一些「好」功能的分支機構?這意味着名稱和這些功能有多重要? – 2014-09-24 08:57:56