sphinx

使用场景 在MYSQL中当对一个文本类型的字段进行LIKE 并以%开头的查询时,会进行全表扫描。 比如 我们商品中有商品500万件。如果我们要搜索商品名称中带红色的,如果不且SPHINX肯定是这样写: 原因一、全表扫描慢: SELECT * FROM php34_goods WHERE goods_name LIKE ‘%红色%’; 这条SQL会进行全表扫描,所以性能非常慢,查询速度非常慢。 原因二、MYSQL没有中文分词,而一般对短语搜索时必须分词才能搜索

sphinx就可以解决以上两个问题: 总结:当一个功能需要对表中text,varchar等文本类型的字段进行LIKE 查询时,如(根据歌词搜索歌曲这个功能)MYSQL是全表扫描非常慢,需要使用SPHINX:

SPHINX优化:1.解决性能问题 2.解决中文分词的问题

sphinx有两种使用方式: 用法一原始用法:SPHINX和mysql是两个独立的服务器 流程:

  1. PHP要先把要搜索的短语发给SPHINX服务器,SPHINX返回的是记录的ID
  2. PHP 再使用sphinx返回的ID查询数据库 用法一、:shpinxse:把SPHINX集成到MYSQL里去(没有单独的shpinx服务器) PHP只需要写一个SQL语句即可,不用很管SPHINX,MYSQL会自己连接查询sphinx。如果要使用这种 需要在LINUX下重新编译MYSQL,把SPHINX当成插件编译到MYSQL中去。

实际操作:

  1. 先下载sphinx的包,我们下载的是coreseek。 corecoek中一个加了中文功能的sphinx。
  2. 下载包之后几个重要文件说明: etc/csft_mysql.conf 配置文件 bin/indexer.exe 创建全文索引 bin/searchd.exe 启动服务器,需创建索引 api/sphinx.php php 操作类

实际应用:先复制MYSQL的配置文件模板到根目录下并改名为sphinx.conf 配置文件配置好之后就可以使用这个文件生成索引了: 安装sphinx服务器 打开服务窗口启用sphinx:

  1. 写PHP代码操作SPHINX A. 先复制coreseek包中的sphinxapi.php文件到项目中:

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注