0

我们有一个网站,用户可以在该网站上为他们想要出售的东西投放广告,其中包含价格、位置、标题和描述等参数。然后可以使用 sphinx 搜索这些,并允许用户指定最小和最大价格、具有搜索半径的位置(使用谷歌地图)等。用户可以选择保存这些搜索并在出现适合他们搜索的新广告时收到电子邮件。问题就在这里:我们希望在每次发布广告时执行反向搜索。使用价格、位置、标题和描述作为参数,我们想要搜索所有保存的“搜索”并获取那些会找到广告的搜索。我想应该只在查询中执行 min- 和 maxprice,并使用一些 Quorom 语法来获取标题/描述中至少出现 2 次或 mby 1 次的所有广告。我们的问题主要在于地理搜索。

这是主要问题,也非常欢迎对我们建议的其他问题的解决方案发表任何评论。提前谢谢你/珍妮

4

1 回答 1

0

sphinx 上的标准“地理搜索”支持应该在前瞻性索引上与正常的回顾性搜索一样工作。

建立了所有已保存搜索的狮身人面像“索引”......

并且您使用“广告”作为搜索查询运行查询:-而不是使用固定半径的“过滤器”,您只需使用属性中的半径(即存储在特定查询中的半径)-如果使用 API不能直接使用setFilterRange,需要使用setSelect,新建一个虚拟属性。

$cl->setSelect("*,IF(@geodist<radius,1,0) as myfilter");
$cl->setFilter('myfilter',array(1));

(是的,min/maxprice 也可以使用普通过滤器完成 - 只需将逻辑反转为您将在回顾性搜索中使用的逻辑)

...复杂之处在于“全文”查询,如果保存的搜索不仅仅是一个关键字,但您似乎已经弄清楚了那部分。

于 2013-11-12T14:57:25.610 回答