使用带有cakephp的搜索服务器

时间:2011-07-28 09:24:03

标签: database cakephp

我正在尝试在我的应用程序中实现自定义搜索。表结构如下所示

主要表:

教师

子表:

技能

skill_values

城市

city_values

将使用位于表city_values中的位置以及参考字段user_id和city_id来触发搜索。这里的城市名称及其纬度和经度位于表格城市下方。 搜索还包括技能,表关系类似于城市。 users table和skill_values表可以与表skill_values中的字段user_id相关联。表技能和技能值与表技能值中的字段skill_id相关。

在这里,我们需要找到执行此搜索的用户的位置,并且需要在20英里范围内过滤此结果。还有一些其他过滤器。

我的问题是我需要在没有页面重新加载的情况下过滤这些结果。所以我使用的是ajax,但如果记录数量增加,我的ajax请求将花费大量时间来获得响应。

如果我使用像sphinx或solr这样的开源搜索服务器从服务器获取结果,这是一个好主意吗? 我正在使用CAKEPHP进行开发,并将我的应用程序托管在云服务器上。

1 个答案:

答案 0 :(得分:0)

  

...但是如果记录数量增加,我的ajax请求将花费大量时间来获得响应。

无论搜索技术如何,都应该有某种分页机制。

因此,您应该能够设置每页返回的限制或最大结果数。

当用户执行搜索查询时,您可以使用Javascript来请求结果的第一页。

然后您可以简单地递增页码并请求第二页,第三页,第四页等

这应该意味着前N个结果总是出现在大致相同的时间内。

由您决定是否要按顺序请求每页搜索结果(即,作为每个成功响应的回调),或者等待某种用户输入(即点击“更多” '链接或滚动到结果的末尾。)

TwitterFacebook上的时间轴/新闻源页面就是这种技术的一个很好的例子。