PHP+Sphinx+MySQL实现全文检索

10 篇文章 0 订阅

理论篇
        sphinx 可以解决 站内搜索的应用场景(用来生成索引数据,为后续的高效搜索做铺垫)

        sphinx 简介

            sphinx是一个基于SQL(mysql sqlserver... )的全文检索引擎,它提供了比数据库更加专业的搜索功能,并且sphinx特别为一些脚本语言设计了搜索的API接口吗,比如PHP、Ruby、Python等,同时为MySQL也设计了一个存储引擎插件

        它是如何与生成索引的?               

            连接mysql数据库(sphinx需要安装在服务器中,在sphinx工具的配置文件sphinx.conf中配置相关的信息)

        sphinx的应用场景

            海量数据中需要对查询做优化的都可以考虑采用sphinx,例如腾讯视频的搜索框所要在短时间内查询到自己想要的数据,这都需要运用类似sphinx这样的工具,以来提升对于用户的体验度。                                           

        类似于腾讯视频的搜索模式用sphinx是如何处理的?

            本质上的处理方式是 PHP 》 MySQL    

            运用了sphinx后的处理方式是   MySQL的数据在sphinx中产生索引的数据  》  PHP直接查询访问sphinx即可

        为什么要用sphinx?

           1. 做搜索时当数据量很大,单纯的MySQL搜索比较慢(如果表进行了分表,那样会更慢)

                    案例:当遇到MySQL单表的情况下且单表的数据量超过了100W甚至更大,如果用模糊查询like,我们表中的索引基本用不上,在执行搜索的这个动作时,MySQL会将整个表进行一个遍历,速度在N秒+。

           2. 搜索时中文分词

                     背景:比如在腾讯视频中搜索‘刘德华’,它首先会展示出相关于刘德华的视频及相关数据,同时也会将‘马德华'、‘霍华德’、‘刘常德’等。。。 数据查询出来,这就叫中文分词

           3. Sphinx 快!

                举例说明:高速的建立索引(在当代的CPU中,峰值能达到10M/s)

                           高性能的搜索(在2~4G的文本数据信息上,平均每次检索的时间小于0.1秒)

                                    可以处理海量的数据(新浪搜狐都在用)

进阶篇
       如何获取sphinx?
            官网地址:http://sphinxsearch.com/

            下载地址              文档介绍               Ubuntu安装              centOS安装                 Windows安装具体安装还需看文档

            安装完后之后的目录概述(配置文件 + api + 主要的两个工具)

                    /etc/sphinxsearch                ---- 存放sphinx工具的配置文件

                    /usr/share/sphinxsearch       ---- 存放api接口(可以cd后查看支持的的接口)

                    /usr/bin/indexer                  ---- 创建索引     import

                    /usr/bin/searched                ---- 后端的进程  import

     sphinx如何工作--sphinx配置
            

详细的配置文件信息,参照官网的文档

    Sphinx如何工作--利用indexer工具生成索引数据
            

命令行生成方式

判断索引数据是否生成成功?

    去查看配置文件sphin.conf中 index news_main 下的path(看主索引生成的目录),找到相关的目录(注意日期,后缀 后缀详解如下图)

·                    * 需要注意的是 在searchd 工具中 预先会将 .spa   .spi 取到内存当中。

    Sphinx如何工作--searched 工具
           searched :后台进程,使用indexer工具生成的数据做查询(处理查询,将相应的数据返回给客户端)


     总结:Sphinx是如何工作的
                    

    

    查询Sphinx的数据
           1. 通过命令进入(P的端口在Sphinx.conf中配置,:mysql的是常规端口 没有的是API的端口)

               mysql -h0 -P9306        # 进入sphinx

                select * from 索引数据名    # 模拟查看sphinx的数据,查询出的字段是可以在配置文件中逐个配置的。

流程结构

原生MySQl存储引擎检索流程:

基于Sphinx存储引擎检索:

我还是比较喜欢使用第二种存储引擎,即使你的编程语言不支持Sphinx的API的接口也可以使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值