红联Linux门户
Linux帮助

coreseek-3.2.13兼容sphinx-0.9.9的配置

发布时间:2015-01-27 09:54:05来源:linux网站作者:SmartTony

coreseek-3.2.13兼容sphinx-0.9.9的配置,可以不经修改,即可直接使用。

不过,为了更好的针对中文进行检索,则需要使用coreseek新增的配置参数,设置中文分词。

以下是中文分词的核心配置,请仔细阅读,应用到自己的配置之中:

source 数据源名称a
{
#......
#该部分的配置,直接采用sphinx的配置,无需更改即可直接使用
#......
}

index 索引名称a
{

#以下部分的配置,直接采用sphinx的配置,无需更改即可直接使用
#......
source   = 数据源名称a    #对应到source
path   = var/data/数据源名称a
docinfo   = extern
mlock   = 0
morphology  = none
min_word_len  = 1
html_strip  = 0
#......
#以上部分的配置,直接采用sphinx的配置,无需更改即可直接使用

#以下部分为中文分词核心配置
#stopwords  = /path/to/stowords.txt的位置
charset_dictpath  = /usr/local/mmseg3/etc/
charset_type  = zh_cn.utf-8
#charset_table                    = .................... #需将原有
的该配置注释掉
ngram_len                    = 0
#以上部分为中文分词核心配置

}

mmseg.ini配置:
mmseg配置文件之中,可以配置英文和数字的切分细则(例如设置china2008作为整体还是切分为china、2008),详情请查看mmseg.ini配置

中文分词核心配置说明:

charset_dictpath=/usr/local/mmseg3/etc/

表示词典文件的目录,该目录下必须有uni.lib词典文件存在;

uni.lib词典文件的制作,请参考:mmseg词典的构造;特别注意,更换或者修改词典后,需要重新索引数据并重启searchd才能生效。

因为BSD/linux默认安装在/usr/local/mmseg3/etc下面,则使用/usr/local/mmseg3/etc/即可;

如果是在Windows系统下,则为词典所在的实际路径,结尾必须使用/,例如:F:\coreseek-3.2.13-win32\etc/

测试时,如果出现Unigram dictionary load Error或者Segmentation fault,一般为词典路径设置不正确。

charset_type=zh_cn.utf-8

表示启用中文分词功能;否则中文分词功能无效,使用sphinx的其他处理模式。

启用中文分词功能后,需要source数据源之中,读取的数据编码字符集为UTF-8,否则无法正确处理;

如果是xml,则正确输出为UTF-8编码格式即可;

如果是MySQL,则设置读取数据输出字符集为UTF-8即可:

MySQL4.1起可以通过SET NAMES UTF8设定输出字符集为UTF-8,即使原始数据为GBK也可;

MySQL4.1以下版本,请直接联系我们解决GBK或者Latin1输出为UTF-8问题;

#stopwords=......

表示停止词文件,该文件中的词汇不参与搜索;文件格式为普通UTF-8文本文件,每行一个;

#charset_table=......
ngram_len=0

表示取消原有的一元字符切分模式,不对中文分词产生干扰;

charset_table的配置需要注释掉!

ngram_len的配置需要设置为0!