sphinx 环境搭建

sphinx 环境搭建

一。http://www.sphinxsearch.org/archives/80

前提 yum -y install mysql mysql-devel

yum -y install automake autoconf  主要是自动加载其他配置和配置中文分词使用的(自我的理解,其实不太清楚。automake 好像要求2.2以上版本吧)

wgethttp://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz下载sphinx安装包

tar zxvf sphinx-0.9.9.tar.gz

cd sphinx-0.9.9

/configure –prefix=/usr/local/sphinx #注意:这里sphinx已经默认支持了mysql

make && make install # 其中的“警告”可以忽略

安装完毕后查看一下/usr/local/sphinx下是否有 三个目录 bin etc var,如有,则安装无误!

mysql 数据库导入 进入 test 数据库

CREATE TABLE `documents` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`group_id` int(11) NOT NULL,

`group_id2` int(11) NOT NULL,

`date_added` datetime NOT NULL,

`title` varchar(255) NOT NULL,

`content` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

插入数据:

INSERT INTO `documents` VALUES (1,1,5,'2017-03-13 09:42:40','test one','this is my test document number one. also checking search within phrases.'),(2,1,6,'2017-03-13 09:42:40','test two','this is my test document number two'),(3,2,7,'2017-03-13 09:42:40','another doc','this is another group'),(4,2,8,'2017-03-13 09:42:40','doc number four','this is to test groups');

//进入sphinx 的安装配置目录 /usr/local/sphinx/etc 把example.sql 导入到mysql数据库

sphinx自带的搜索命令:search 后来取消了,所以要使用php来进行测试

cd /usr/local/sphinx/etc #进入sphinx的配置文件目录

cp sphinx.conf.dist sphinx.conf#新建Sphinx配置文件

vim sphinx.conf #编辑sphinx.conf

sphinx 的配置分析:http://blog.csdn.net/gaoxuaiguoyi/article/details/48739263

bin/indexer -c etc/sphinx.conf article ### 建立索引文件的命令

启动sphinx 服务 进入sphinx 安装目录 执行

bin/searchd -c etc/sphinx.conf

测试 安装php-phinx 扩展

#如果没有扩展安装包,先下载

wgethttp://pecl.php.net/get/sphinx-1.3.2.tgz

tar zxvf sphinx-1.3.2.tgz

cd sphinx-1.3.2

/var/lanmps/php/bin/phpize #注意phpize 得编译情况

./configure 或者

./configure --with-php-config=/var/lanmps/php/bin/php-config --with-sphinx=/var/lanmps/sphinx

make

make install

查看extension_dir 目录中是否有sphinx.so文件

通过php -m 查看扩展是否显示  如果sphinx.so 文件存在并且php -m 不显示扩展在php.ini文件中加入

[sphinx]

extension=sphinx.so

重启php-fpm service php-fpm restart

service nginx start

service mysqld start

php 测试sphinx 分析结果


$s = new SphinxClient;

$s->setServer("localhost", 9312);

$s->setMatchMode(SPH_MATCH_ANY);

$s->setMaxQueryTime(3);

$result = $s->query("number is");

echo '';

print_r($result);

yum list installed

yum list php56*

完美配置:http://blog.csdn.net/baidu_34812181/article/details/51263028

rpm -qa nginx

nginx-1.0.15-12.el6.x86_64

rpm -ql nginx-1.0.15-12.el6.x86_64

二。接下来我们需要建立一个Sphinx的配置文件 E:\coreseek\etc\mysql.conf,将其内容改为下面这些:

(参考了:https://www.oschina.net/question/84274_11938)

source mysql

{

type                                         = mysql

sql_host                                    = localhost

sql_user                                    = root

sql_pass                                          =

sql_db                                      = test

sql_port                                    = 3306

sql_query_pre                         = SET NAMES utf8

sql_query                                 = SELECT id,addtime,title,content FROM post

sql_attr_timestamp                 = addtime

}

index mysql

{

source                                      = mysql

path                                         = E:/coreseek/var/data/mysql

charset_dictpath                   = E:/coreseek/etc/

charset_type                           = zh_cn.utf-8

}

searchd

{

listen                                         = 9312

max_matches                         = 1000

pid_file                                     = E:/coreseek/var/log/searchd_mysql.pid

log                                            = E:/coreseek/var/log/searchd_mysql.log

query_log                                = E:/coreseek/var/log/query_mysql.log

}

先讲下这个配置文件中每项的含义。

source mysql{} 定义源名称为mysql,也可以叫其他的,比如:source xxx{}

type  数据源类型

sql_* 数据相关的配置,比如sql_host,sql_pass什么的,这些不解释鸟

sql_query 建立索引时的查询命令,在这里尽可能不使用where或group by,将where与groupby的内容交给sphinx,由sphinx进行条件过滤与groupby效率会更高,注意:select 的字段必须包括一个唯一主键以及要全文检索的字段,where中要用到的字段也要select出来

sql_query_pre 在执行sql_query前执行的sql命令, 可以有多条

sql_attr 以这个开头的配置项,表示属性字段,在where,orderby,groupby中出现的字段要分别定义一个属性,定义不同类型的字段要用不同的属性名,比如上面的sql_attr_timestamp就是时间戳类型。

index mysql{} 定义索引名称为mysql,也可以叫其他的,比如:index xxx{}

source 关联源,就是source xxx定义的。

path 索引文件存放路径,比如:E:/coreseek/var/data/mysql 实际存放在E:/coreseek/var/data/目录,然后创建多个名称为mysql后缀却不同的索引文件

charset_dictpath  指明分词法读取词典文件的位置,当启用分词法时,为必填项。在使用LibMMSeg作为分词 库时,需要确保词典文件uni.lib在指定的目录下

charset_type 字符集,比如charset_type = zh_cn.gbk

searchd{} sphinx守护进程配置

listen 监听端口

max_matches最大匹配数,也就是查找的数据再多也只返回这里设置的1000条

pid_file pid文件路径

log全文检索日志

query_log查询日志

好了,配置文件就这样,配置的参数还有很多,大家可以自己查文档。

三。中文分词 coreseek

http://www.sphinxsearch.org/archives/82

中文分词的 Coreseek 老下载不到资源,好不容易下载到,结果提示我本地autoconf 版本过高,因工作原因暂停试验以后再试

你可能感兴趣的:(sphinx 环境搭建)