sphinx with autocomplete

php做服务端,刚接到做app搜索自动补全需求的时候,第一反应是sphinx。

查找sphinx资料,在linux服务器上搭建了php sphinx 模块

linux配置启动计划任务执行脚本生成索引文件

因为服务器端php的框架是codeigniter,实例化sphinx的时候只能在Moede , $sphinx = new Sphinx Client();

通过php取出ID集合,接着卡住了,因为sphinx 索引的是ID集合,又分词查找的一元化,继续看sphinx 中文版coreseeek官方文档

有一个全文匹配模式叫  SPH_MATCH_EXTENDED2

最后在(搜索执行前)query执行语句是关键字前加上^

$this->sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
$keys_arr = $this->sphinx->query('^' . $keyword, "*");

终于搞定了

但是app端频繁调接口会影响服务器性能,又卡住了

找了相关资料也没怎么说,没办法,打个电话给以前技术老大求助

老大只说了一句思路错了

并提供了方案:

第一个关键字请求是post到服务端,返回给客户端是要求客户端放入一个数组,

之后没键入一个关键字就在这个数组匹配,没有的话再post服务端请求一次,以此类推

瞬间豁然开朗,又学到新思路,

感谢老大

并分享给和我一样遇到搜索引擎自动提交问题没思路的同仁!

02/29 17:16 2016 By DanielChan

 


posted @ 2016-02-29 17:17  Uncle_Daniel  阅读(150)  评论(0编辑  收藏  举报