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!