搜索结果去重或者做聚合问题

Elasticsearch | 作者 God_lockin | 发布于2018年07月20日 | 阅读数:505

我们现在在做一个类似酒店搜索的服务,但是会遇到很多奇怪的数据组合,全显示出来就会冗余,通过经纬度进行聚合又会出现把两个不同的酒店合在一起的case,各位大佬有没啥建议?
 
#同店,不同名字,同一个地址,同经纬度
[
  {
    经纬度略
    "name": "汉庭上海美兰湖酒店",
    "address": "上海宝山区沪太路6497号"
  },
  {
    经纬度略
    "name": "汉庭酒店上海 美兰湖店",
    "address": "上海宝山区沪太路6497号"
  }
]
 
#不同店,相同名字,不同地址,不同经纬度
[
  {
    经纬度略
    "name": "汉庭精品酒店",
    "address": "上海宝山区XX号"
  },
  {
    经纬度略
    "name": "汉庭精品酒店",
    "address": "上海长宁区XX号"
  }
]
 
#不同店,不同名字,相同地址(楼上楼下),相同经纬度
[
  {
    经纬度略
    "name": "春红旅馆",
    "address": "上海宝山区XX路1号1楼"
  },
  {
    经纬度略
    "name": "老赵旅社",
    "address": "上海宝山区XX路1号4楼"
  }
]
 
……
已邀请:

rochy - rochy_he@tw

赞同来自:

根据名字进行搜索,
按照经纬度对结果进行聚合,
然后再经纬度聚合中加一个topHits子聚合;
最后取子聚合的内容,并按照得分排序即可。

要回复问题请先登录注册