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