我刚刚发现了我想用于PHP应用程序的sphinx搜索。我有一张地理定位表,其中每条记录都存储一个国家代码。对于使用搜索功能查找地理位置的每个用户,我都知道他来自哪个国家。
我如何重新评估结果,使匹配结果与用户所在国家的距离上升?我已经为每个国家计算了一个距离矩阵,我可以通过SQL访问它。地理位置数据库中的国家/地区信息存储为2个字母的ISO国家/地区代码。
这个问题的解决方案是什么?我听说过UDF,它们适用于那个问题吗?是否可以通过重新格式化我的表来更轻松地解决这个问题?
非常感谢。
答案 0 :(得分:1)
解决这个问题的“最简单”方法是为每个国家/地区设置坐标。然后,您将每个记录的坐标存储在sphinx索引中,并在搜索时找到坐标并在搜索中将它们用于我们。这样狮身人面像动态地计算距离。
你有像这样的坐标来创建矩阵吗?但它也重新补充,你只是在每个国家使用一个'点',如果你的矩阵更先进,例如在每个边界上取最近点(使奇数形状国家之间的区别更好),那么它就不会那么好用。
从理论上讲,您可以使用payloads,使用国家/地区名称作为关键字,以及有效负载中的距离(特别安排使得近距离公差具有较高权重)来实现此目的,但索引可能会很昂贵,并且可能在实践中没有那么好用。