前言
Mysql 的搜索,只能很简单的like '%无道%',那显然是远远不够的。只能找第三方的服务。
最终选择了Sphinx
阅读本文需要:
1、知道Linux的基本命令
2、知道Linux的基本命令
3、稍微熟悉Linux
因为中间可能有些步骤我写错了,或者就少了那么简单的一步,你就不知道怎么回事了。。
并且,这是需要服务器的,撰写此文是CentOS,虚拟机基本只能用like '%无道%'
下载&&安装
下载
解压
并改名为sphinx,然后移动到/usr/local
并进入到/usr/lcoal/sphinx
在此目录下创建data,log文件夹
在/usr/local/sphinx/etc 编写 sphinx.conf 配置文件
该目录下有三个文件,
我们需要将sphinx.conf.dist复制并重命名为sphinx.conf
然后边距sphinx.conf文件:
此文件是需要填写一些配置(包括数据库信息的配置,索引的一些配置)等等。
不过我是看他中文写得我头都大了。
样例让如下(删除注释了):
A.
以上就是数据库的配置,包括host,user,pass,db,port。
值得说的是:sql_query 是你要查询的字段,也就是一段select语句,注意着语句要包括主键!
B.
这个是索引,其中source的值和上面A 的命名的src1对应,
path就是存放索引的位置,建议就是我们最之前建立的data文件夹下,
C.
这个就是索引器的配置,也即索引时所使用的最大内容
D.
这个可以理解成接口的一些配置信息(这样说不对),
反正就是需要配置好了之后,接口才能使用。
listen:监听端口
然后就是日志存放路径,如果之前建立了data和Log文件夹,那么以上配置基本是现成的,也即log文件夹里面。
注意,以上A.B.C.D虽然我是分开展示出来的,但是他们都是在sphinx.conf文件里面的。
执行生成索引文件的命令:
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf test1 --rotate #重新生成索引的命令
运行sphinx
/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf
/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf --stop关闭sphinx命令
使用
进入api文件夹/usr/local/sphinx/api,将sphinxapi.php复制到你的PHP目录里面。这是相当于sdk的文件,需要引用它。
编写测试代码:
如图所示,返回的是id,该id是你的表的主键。
每当数据库变动时,需要重新执行索引,不然搜索只会是以前的数据。【重要事情说三遍】
每当数据库变动时,需要重新执行索引,不然搜索只会是以前的数据。【重要事情说三遍】
每当数据库变动时,需要重新执行索引,不然搜索只会是以前的数据。【重要事情说三遍】
参考文章
国内环境就是这样,很多文章都过时、互相抄袭,再加上百度....,要查很多文章才能明白。
你还得带着批判的思想去按照他说的做,不然光按照他说的做,很可能有错误。【当然,不一定是文章的锅,还有可能是软件版本的更新问题。】
完整配置