sphinx应用,中文分词核心配置!

来源:互联网 发布:张家口软件培训班 编辑:程序博客网 时间:2024/06/06 13:39

开篇说下本人对sphinx和coreseek之间关系的理解:coreseek是在sphinx的基础上的一个中文分词插件,也就是说如果你不用coreseek的sphinx集成版本的话,得下载其他的中文分词插件才能进行中文分词;其他的插件我所知道的就是SFC。
本文是一个在sphinx(斯芬克斯)基本运行环境都配置好的基础上来说的;可谓本文是"先走后爬"呀,管他的哟!
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的配置,无需更改即可直接使用



#以下部分为中文分词核心配置
charset_dictpath = /usr/local/mmseg3/etc/
charset_type = zh_cn.utf-8
#charset_table = .................... #需将原有的该配置注释掉
ngram_len = 0
#以上部分为中文分词核心配置
}
中文分词核心配置说明:
charset_dictpath=/usr/local/mmseg3/etc/
表示词典文件的目录,该目录下必须有uni.lib词典文件存在;
uni.lib词典文件的制作,请参mmseg词典的构造
因为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问题;
#charset_table=......
ngram_len=0
表示取消原有的一元字符切分模式,不对中文分词产生干扰;
charset_table的配置需要注释掉!

ngram_len的配置需要设置为0!


配制文件示例:

index threadsinfo{

 source                                  = info
        path                                    = /usr/local/coreseek/var/data/info
         docinfo = extern
        mlock = 0
        morphology = none
        #### ........
        min_word_len = 2
         charset_type = zh_cn.utf-8  #这是关键处
        #charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
        min_prefix_len = 0
        enable_star = 1
        html_strip = 1
        ngram_chars = U+3000..U+2FA1F
        charset_dictpath=/usr/local/mmseg3/etc  #这是关键处
        ngram_len = 0  #这是关键处
}

原创粉丝点击