欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

学习sphinx - 尼农小道

程序员文章站 2022-04-07 10:36:06
...
在我们php开发中如何使用sphinx技术?

答:对应MySQL数据库中的字段,就是将字段中的中文信息拆分成多个词语,然后对这些词语建立索引。以后查询的时候,先去查询这些索引文件,然后返回这些满足条件的记录的主键id,然后根据主键id查询MySQL数据库,返回记录。

学习sphinx - 尼农小道

 

 

什么是sphinx?(百度百科)

注意:对于sphinx来说,单表千万条记录,响应的时间都是毫秒级别的。

学习sphinx - 尼农小道

注意:默认sphinx只支持英文和俄文

官网:

http://sphinxsearch.com/

 

由于Sphinx只支持以上两种语言,所以有第三方公司为sphinx开发了中分分词包,叫做coreseek

官网:

http://www.coreseek.cn/

学习sphinx - 尼农小道

客户案例:http://www.coreseek.cn/products/ft_powered/

 

 

注意两点:

  1. sphinx是一个全文搜索引擎,只支持俄文和英文
  2. 由于上面的原因,有专门的公司为其开发了中文分词包,叫做coresesk。
  3. 中国有一家做的比较好的公司(海量分词)

    http://www.hylanda.com/

    故事:http://home.hylanda.com/show_5_19.html

    学习sphinx - 尼农小道

     

     

    实操

  4. 下载

    学习sphinx - 尼农小道

     

    2. 构建一个大数据的表(歌词表)

    mysql > source d:/songs.sql

    文件目录:

    学习sphinx - 尼农小道命令:

    学习sphinx - 尼农小道

    sphinx安装-使用

    安装

    千万注意:sphinx的配置文件一定不能使用Windows的记事本打开。(BOM头)

    学习sphinx - 尼农小道

    API接口文件:可以用php调用该接口去操作sphinx服务器端的索引文件。

    学习sphinx - 尼农小道

     

  5. 修改配置文件

    学习sphinx - 尼农小道

    索引文件

    学习sphinx - 尼农小道

    内存设置:

    学习sphinx - 尼农小道

    sphinxd配置:

    学习sphinx - 尼农小道

     

  6. 建立索引

    学习sphinx - 尼农小道

    配置文件中index后面的名称

    学习sphinx - 尼农小道

    建立索引后的目录结构

    学习sphinx - 尼农小道

     

    3. 实际使用

    a. 开启sphinx的服务,可以使用帮助信息查看如何使用

    学习sphinx - 尼农小道

    使用:

  7. 可以单独的读取配置文件运行
  8. 也可以安装成Windows的一个系统服务来运行

    学习sphinx - 尼农小道

     

    启动sphinx服务(读取配置文件单次启动)

    学习sphinx - 尼农小道

    定义为系统服务后(安装)

    学习sphinx - 尼农小道

    使用

    1. 具体使用(sphinx流程可以见下图)

    sphinx流程图:

    sphinx存储引擎:通过下面的步骤发现,发现php程序在做查询的时候,必须先根据sphinx服务器返回主键ID,然后根据主键ID去查询MySQL数据库,最后返回数据库。

    这个时候,可以这样思考,将sphinx作为MySQL的一个存储引擎使用,这个时候php程序就可以直接的去连接MySQL服务器,MySQL服务器去自身的sphinx存储引擎里面获取分词后的数据。不需要连接一次sphinx服务器了。这个存储引擎叫做sphinxSE。

    http://blog.csdn.net/uestc_huan/article/details/6395145

     

    学习sphinx - 尼农小道

     

  9. 简单使用

    学习sphinx - 尼农小道

     

  10. 使用

    学习sphinx - 尼农小道

    学习sphinx - 尼农小道