sphinx with mysql_中文全文搜索sphinx+mysql+中文分词安装详解

[导读] 1、什么是Sphinx Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中) 需要联系我们(Sphinxsearch.com)以获得商业授权。 一般而言,Sphinx是一个独立的搜...

1、什么是Sphinx

Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中)

需要联系我们(Sphinxsearch.com)以获得商业授权。

一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速、低空间占用、高结果

相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。

当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式

的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS

的原生支持)。

搜索API支持PHP、Python、Perl、Rudy和Java,并且也可以用作MySQL存储引擎。搜索

API非常简单,可以在若干个小时之内移植到新的语言上。

Sphinx 是SQL Phrase Index的缩写,但不幸的和CMU的Sphinx项目重名

2、Sphinx的特性

高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);

可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可

处理100 M 文档);

提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;

?

支持分布式搜索;

provides document exceprts generation;

可作为MySQL的存储引擎提供搜索服务;

支持布尔、短语、词语相似度等多种检索模式;

文档支持多个全文检索字段(最大不超过32个);

文档支持多个额外的属性信息(例如:分组信息,时间戳等);

停止词查询;

支持单一字节编码和UTF-8编码;

原生的MySQL支持(同时支持MyISAM 和InnoDB );

原生的PostgreSQL 支持.

一、安装所需文件mmseg-0.7.3.tar.gz 中文分词

fix-crash-in-excerpts.patch sphinx支持分词补丁

http://www.coreseek.com/uploads/sources/fix-crash-in-excerpts.patch

sphinx-0.98rc2.zhcn-support.patch sphinx支持分词补丁

http://www.coreseek.com/uploads/sources/sphinx-0.98rc2.zhcn-support.patch

二、开始安装

1.安装libmmseg

安装mmseg完成,测试一下

有问题可以尝试执行下面命令

2.重新编译mysql

在安装之前先打两个补丁,这个是支持中文必须打的补丁

3.安装sphinx

官网解决办法:

4.配置sphinx

5.索引建立

装好sphinx后在sphinx的目录中有三个目录 分别为bin etc var

bin中 存有sphinx用到的一些执行文件 包括 indexer 索引建立 search 查询工具 searchd 查询服务器 等

为了下面测试方便,我们先将sphinx.conf自带的example.sql脚本倒入的mysql中

//创建了一个test库,并建立了documents测试表和数据

索引的建立方法为

test1为资源名称 不写为默认所有都建立索引

附:

建立索引期间可能由于不同版本的数据库导致indexer找不到共享库libmysqlclient.so.16

需要把/opt/mysql/lib/mysql/libmysqlclient.so.16.0.0 这个文件复制到/usr/lib下 或者作软连接即可

6.查询服务器

sphinx的查询 可以大致分为三种

1 数据库引擎中的查询

2 通过search工具查询

/usr/local/sphinx/bin/search --config /usr/local/sphinx/etc/sphinx.conf test

3 通过php的接口查询 详见sphinxapi.php

三、在mysql中的使用SphinxSE方式调用Sphinx

1.在mysql中的使用SphinxSE方式调用Sphinx

首先建立一张索引专用表:

test1:索引的名称,可以在sphinx.conf中查找到

建立完索引专用表后,我们就可以在mysql中使用它了,例如,在mysql中输入

运行后,结果记录中将会显示包含doc字符串的所用记录行

关于query的语法,还有sphinx的配置等信息你可以请参考:

http://www.sphinxsearch.com/doc.html

2.中文分词应用

生成词典

进入到mmseg的源代码目录后

在data下边会产生一个文件unigram.txt.uni

这个就是生成的字典 然后把字典改名为uni.lib放在可以读取的目录中即可

修改 sphinx.conf(/usr/local/sphinx/etc/sphinx.conf)配置文件

在索引中加入

(如果searchd已经再运行,先kill 它再运行)

注意:在添加完数据后,需要重新加载索引,这样新的数据才能被缓存进去

重建索引,成功后,开启索引监听

这样,就可以在phpmyadmin中进行测试了。

好像没出来。。。。

修改 sphinx.conf

去掉下面的注释

再重启searchd就可以搜出结果了

使用service 控制sphinx

先增加一sphinx用户并属于website组(事先已存在),并修改sphinx目录的属主

创建/etc/init.d/sphinx脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值