我们有一个网站,用户可以根据价格,位置,标题和说明等参数为他们想要销售的商品投放广告。然后可以使用sphinx搜索这些内容,并允许用户指定min-max和maxprice,具有searchradius的位置(使用谷歌地图)等。用户可以选择保存这些搜索并在新广告出现以适合他们的搜索时收到电子邮件。问题在于:我们希望每次发布广告时都执行反向搜索。以价格,位置,标题和说明作为参数,我们希望搜索所有已保存的“搜索”并获取可能找到该广告的搜索。 min-max和maxprice应该只在我想要的查询中执行,并且一些Quorom语法可以在标题/描述中获得至少2或mby只有1次出现的所有广告。我们的问题主要在于地理搜索。我们如何在不搜索每个已保存搜索的情况下找到“搜索圈”包含新发布位置的所有搜索?
这是主要问题,对我们建议的解决其他问题的任何评论也非常受欢迎。提前谢谢你/珍妮
答案 0 :(得分:0)
对sphinx的标准“地理搜索”支持应该在预期指数上同样有效,作为正常的回顾性搜索。
为所有已保存的搜索构建了一个狮身人面像'索引'......
您使用'ad'作为搜索查询运行查询: - 而不是使用固定半径的'过滤器',您只需使用属性中的半径(即存储在特定查询中的半径) - 如果使用API不能直接使用setFilterRange,需要使用setSelect来创建一个新的虚拟属性。
$cl->setSelect("*,IF(@geodist<radius,1,0) as myfilter");
$cl->setFilter('myfilter',array(1));
(是的,min / maxprice也可以通过普通过滤器完成 - 只需将逻辑反转为您在回顾性搜索中使用的逻辑)
...复杂性在“全文”查询中,如果保存的搜索不仅仅是一个关键字,而且您似乎已经找到了该部分。