php作服务端,刚接到作app搜索自动补全需求的时候,第一反应是sphinx。php
查找sphinx资料,在linux服务器上搭建了php sphinx 模块linux
linux配置启动计划任务执行脚本生成索引文件数组
由于服务器端php的框架是codeigniter,实例化sphinx的时候只能在Moede , $sphinx = new Sphinx Client();服务器
经过php取出ID集合,接着卡住了,由于sphinx 索引的是ID集合,又分词查找的一元化,继续看sphinx 中文版coreseeek官方文档app
有一个全文匹配模式叫 SPH_MATCH_EXTENDED2框架
最后在(搜索执行前)query执行语句是关键字前加上^codeigniter
$this->sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
$keys_arr = $this->sphinx->query('^' . $keyword, "*");
终于搞定了post
可是app端频繁调接口会影响服务器性能,又卡住了性能
找了相关资料也没怎么说,没办法,打个电话给之前技术老大求助this
老大只说了一句思路错了
并提供了方案:
第一个关键字请求是post到服务端,返回给客户端是要求客户端放入一个数组,
以后没键入一个关键字就在这个数组匹配,没有的话再post服务端请求一次,以此类推
瞬间豁然开朗,又学到新思路,
感谢老大
并分享给和我同样遇到搜索引擎自动提交问题没思路的同仁!
02/29 17:16 2016 By DanielChan