所以我的Rails应用程序使用elasticsearch(与searchkick),使用_geo_distance排序函数工作得很好,但我需要做一个更复杂的排序,包括位置和尝试提升商家名称完全匹配字符串。Rails elasticsearch _geo_distance和自定义评分/排序
例如,如果我进行查询,并且有10个上升距离返回结果,但#5结果也是记录中商业名称的精确字符串匹配,我想将其提升/提升到#1位置(基本上覆盖了该记录的距离排序)。
我有两种方法可以解决这个问题,但我遇到了两个问题。
首先,将在初始查询上执行此操作,以便elasticsearch处理工作。
其次,将对弹性搜索返回的结果进行一些类型的后处理重新排序,以便在需要时查找完全匹配和重新排序。
第一种方法的问题是,当调用_geo_distance时,内置评分机制似乎完全转移到距离,这让我不知道如何将自定义评分函数与位置混合。
而第二种方法的问题是返回的搜索结果是一种自定义类型的SearchKick对象,它似乎不像普通的数组或哈希排序机制。
有没有办法做一些事前或事后查询以这种方式在结果中推广文档?
谢谢。
感谢您的回答,但是我仍不清楚这个评分如何与Geo距离评分/结果一起工作。地理位置结果按距离排序,似乎会改变正常的评分功能。在这种情况下,“分数”的提升会导致错误的距离测量。那么我怎样才能保存地理测量数据,并仍然推广文档? – kayatela 2014-09-01 17:13:43
我想另一种方法来处理这个问题,就是让结果按_score(而不是geo)排序,但是在返回的结果中也包含_geo_distance数据。但我还没有想出如何做到这一点。 – kayatela 2014-09-01 18:18:46
检查我的编辑上面,我给你一个例子。 – hxuanji 2014-09-02 03:21:07