把文档看了一遍,然后动手测试了搞了两天才绕明白 SphinxSearch 的基本用法 ~
应用场景
之前搜索都是 PHP + MySQL原生态搜索 select like %%
模式,如果遇到数据量较大,就会出现非常慢,甚至每次执行都MySQL等待。如果数据有1000万条,需要全文搜索,效率低下缓慢。一个解决办法Sphinx
踩过的坑
- 总是安装失败
从官网下载Sphinx,安装,启动第一步都错误,不断报错各种。后来捣鼓了很久,才发现版本问题。官网默认下载的Sphinx3.x,但是文档却是2.x,默认配置也是2.x的,完全都没有更新,感觉Sphinx官方的人员都懒得更新这个项目了。改为下载Sphinx2.x,对着文档完全没有错误。
- 如何保证实时同步,包括同步删除
实时是两个,比如MySQL中有记录被删除,那么Sphinx索引中也需要进行删除,MySQL有新增或更高,Sphinx索引中必须进行更新更改。这里我的方案是在MYSQL中新起一个表 sphinx (id int primary,type int default 1 comment '1新增或更新 0表示记录删除 默认1')
,当文档中有记录比如id=1进行了更新或新增,那么写入一条记录id=1,type=1。如果文档中有记录id=xx被删除或不对外索引,写入一条记录id=xxx,type=0。
然后执行创建增量索引 indexer delta --rotate
,创建之后再将增量