sphinx安装(转自:minglin)

回眸只為那壹抹淺笑 提交于 2020-04-04 06:36:08

 

KM 原来是使用solr做全文搜索,但搜索结果一直不太令人满意,最近决定转成使用sphinx
试用了sphinx的几个不同版本

  • sphinx0.9.10, sphinx的最新版本, 可以对中文进行搜索,但默认安装没有对中文分词,需要打patch, 没找到这个版本的patch, 放弃
  • coreseek 3.1 rc1, coreseek是基于sphinx, 并对中文分词做了加强, 这个版本安装完之后,使用SPH_MATCH_ALL 模式进行查询的时候,没有返回任何结果,也没有出错信息,本着拿来即用的原则,放弃
  • 最后安装的是coreseek 3.1 beta3,  以下是简要的安装步骤:

1. 下载mmseg3.1  http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz

   mmseg 是sphinx 的中文分词软件包,编译,安装

./configure --prefix=/usr/local/mmseg
make
make install

2.  下载安装 coreseek 3.1b3 http://www.coreseek.cn/uploads/sources/csft3.1b3.tar.gz

./configure --prefix=/usr/local/sphinx --with-mysql --with-mmseg-includes=/usr/local/mmseg/include/mmseg --with-mmseg-libs=/usr/local/mmseg/lib/

make

make install

3. 创建字典

mkdir /usr/local/sphinx/dict/

cd INSTALL/mmseg-3.1/data

/usr/local/mmseg/bin/mmseg -u unigram.txt

cp unigram.txt.uni /usr/local/sphinx/dict/uni.lib

创建 /usr/local/sphinx/dict/mmseg.ini ,  输入

[mmseg]
merge_number_and_ascii=1;
number_and_ascii_joint=-;
compress_space=0;
seperate_number_ascii=1;
#merge_number_and_ascii: 字母和数字连续出现是非切分
#number_and_ascii_joint:连接数字和字母可用的符号,如'-' '.' 等
#compress_space:暂时无效
#seperate_number_ascii:是否拆分数字,如 1988 -> 1/x 9/x 8/x 8/x

4. 创建 配置文件

首先从模版复制

cp /usr/local/sphinx/spinx.conf.dist /usr/local/sphinx/sphinx.conf

然后修改数据库连接和sql_query

在index下添加字典路径

index

{

...

charset_dictpath = /usr/local/sphinx/dict

...

}

5. 生成index

/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all

6. 启动daemon

/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

启动之后如果更新索引要加rotate参数

/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all --rotate

7. 然后就可以在php中进行连接搜索了

   $cl = new SphinxClient ();

   $cl->SetServer ( 'hostname', 3312 );

   $index = "*";

   $cl->SetMatchMode ( SPH_MATCH_ANY );

   $cl->setSortMode(SPH_SORT_RELEVANCE);

   $cl->setRankingMode(SPH_RANK_WORDCOUNT);

   $cl->SetArrayResult ( true );

   $res = $cl->Query ( $q, $index );

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!