代码改变世界

中文分词核心配置

2011-04-03 22:28  乱世文章  阅读(292)  评论(0编辑  收藏  举报

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!