Sphinx全文检索

  我们知道,用mysql数据库的like搜索数据时,通常会扫面全表,导致查询数据变的很慢,这是我们不能忍受的,并且根据条件搜索出来的结果通常很不让人满意,比如搜索“蓝色的长的牛仔裤”,其中包括了很多关键词,如果让mysql来搜索,搜索出来的结果估计只是名为“蓝色的长的牛仔裤”的商品,如果没有这件商品的话,那就没有数据了,所以,mysql的like查询语句将会非常鸡肋。这就要我们另辟蹊径!使用到sphinx却可以完美的解决这些问题!

  我所理解的sphinx,应该是它是作为另一个数据表的形式把要查询的字段数据以一个容器的形式存储起来,等到要查询数据库该字段的时候,它会先去sphinx里面检索,然后给我们返回一个这个字段的id,这个时候我们可以根据这个id非常效率的去数据库里面查询数据了!而且sphinx里面的词语功能非常强大,它会自动的帮我们拆分词语。

  说到拆分词语,有些地方却是我们要注意的地方比如:搜索“C#”出来的却是包含“C”的记录,搜索“C#源码”出来的却是包含“C*源码”的记录,这里的*代表任意字符,而把中间的#给忽略掉了。那么要如何解决呢?我们打开sphinx索引的配置文件,找到“charset_table = ”,在里面增加“U+0023”其中“0023”是“#”的16进制ASCII值。如需其他字符相应添加即可。下面是sphinx在linux的安装扩展的步骤:

   

   1:到http://sphinxsearch.com 下载sphinx最新的源码包(以下称sphinx),还有到http://pecl.php.net/package/sphinx 下载php的扩展客户端

      2:上传到Linux解压(tar -zxvf filename),如果一上来就安装phpsphinx,就会报错:configure: error: Cannot find libsphinxclient headers,要先安装libsphinxclient,cd sphinx/api/libsphinxclient,然后执行./configure,编译安装 make && make install;

  3:好了,该安装phpsphinx了,cd phpsphinx,这个要用phpize命令安装php扩展,执行phpize(加载这个文件的绝对路径),然后执行./configure,之后编译安装 make && make install,在php.ini下加上那么一行:extension=sphinx.so,重启apache(service httpd restart),打开phpinfo就有sphinx扩展了

  4:安装sphinx:./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql(一般安装第三方软件都是放在这个目录下,目录如其名:usr=>unix software resoure),make && make install。

   注:sphinx的设置配置的详细网址 

原文地址:https://www.cnblogs.com/lgqtecng/p/6415813.html