window7下安装sphinx2.1.1

前几天看到mysql的全文搜索,现在的mysql虽然支持全文搜索,却不支持中文的搜索。看到sphinx可以作为一个搜索引擎实现中文搜索,于是这几天进行研究。

首先介绍下sphinx(斯芬克斯)的实现原理:

mysql其实也可以实现中文搜索,像sql:select *  from articles where title like "%标题%"但我们知道,like的搜索只有左边没有%时才会用到索引,两边都有%的是用不到索引的。如果网站的访问量很大,使用like实现模糊查询实在是太慢了。这时候要想使搜索速度变快,我们就用到了sphinx。

Sphinx的整个工作流程就是Indexer程序到数据库里面提取数据,对数据进行分词,然后根据生成的分词生成单个或多个索引,并将它们传递给searchd程序。然后客户端可以通过API调用进行搜索。

例如:我们有一张表如下图

sphinx的配置项中有个source(数据源),从里面可以配置数据的来源就是上面这张表。然后sphinx中的indexer程序根据这张表进行分词。比如查找test,sphinx就会找到id为1,2,4的三条记录。我们可以根据sphinx返回的到数据表中查找记录详细信息。

原理介绍完了,接下来我们说一下sphinx的安装。

刚开始安装时我是在http://sphinxsearch.com/downloads/current/下载的最新版3.1.1,可是当我按照网上的步骤操作时,却出现了问题。

当在bin目录下执行indexer testindex和searchd时,都出现了indexer或searchd不是内部或外部命令。大家可以看一下,下图是3.1.1的解压包,它的indexer后面是没有.exe

然后我又下载了3.0.3,解压后如图。可以看到,后面是有.exe的

然后我就用3.0.3的建立索引。indexer testindex.接着启动searchd却报错了。按着网上的步骤搜索测试search  test.也是提示search不是内部或外部命令(刚开始用的searchd test进行搜索报错,看了网上的是search test,可是bin目录下却没有search.exe这是程序,纳闷了好久)

后来又找相关视频,视频中是下载的2.1.1版本,2.1.1版本是有search.exe这个程序的

接下来正式安装sphinx(注意:使用的是2.1.1版本)

新建data和log目录

配置sphinx.conf文件,我们可以用sphinx-min.conf.in进行修改

如果搜索中文是一定要设置字符集

接下来建立索引,在bin目录下执行,testindex是配置文件中index后面的名称

执行搜索,搜索test

如果想重新建立索引可以这样

在命令行下搜索中文会搜索不到,我们可以在程序中搜索中文

PHP中调用Sphinx有两种方式

方式一:使用Sphinx官方提供的api文档,引入include 'sphinxapi.php'; 

方式二:

(1)在这里 https://pecl.php.net/package/sphinx/1.3.2/windows 下载Sphinx模块(根据自身环境选择相应版本,可以通过phpinfo进行查看)

(2)下载后解压,并将解压得到的php_sphinx.dll文件放到php的ext目录下

使用

3.1.1和3.0.3的版本没研究好,有研究好的大神请告知

发布了42 篇原创文章 · 获赞 10 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/huihuikuaipao_/article/details/99769415