http://blog.aboutc.net/linux/47/linux-configure-sphinx-chinese-word-segmentation
系统环境
$ wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
coreseek-4.1-beta.tar.gz 包含了 mmseg-3.2.14 和 csft-4.1。
$ cd /usr/local/src/ $ sudo tar xf /path/to/coreseek-4.1-beta.tar.gz $ cd coreseek-4.1-beta/mmseg-3.2.14/ $ ./bootstrap ##输出的warning信息可以忽略,如果出现error则需要解决 $ ./configure --prefix=/usr/local/mmseg3 $ make $ sudo make install
测试:
$ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc ../testpack/var/test/test.xml
$ cd ../csft-4.1/ $ ./buildconf.sh ##输出的warning信息可以忽略,如果出现error则需要解决 $ ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql ##如果提示mysql问题 $ make $ sudo make install
导入测试数据:
$ mysql -u root -p test < /usr/local/src/coreseek-4.1-beta/csft-4.1/example.sql Enter password:
配置 csft.conf,coreseek 默认会找 安装目录下的 etc/csft.conf 作为配置文件
$ cd /usr/local/coreseek/ $ cp etc/sphinx-min.conf.dist etc/csft.conf
编辑 etc/csft.conf, 1) 配置要索引的数据库:
source src1 { type = mysql sql_host = localhost sql_user = test sql_pass = sql_db = test sql_port = 3306 # optional, default is 3306 # 设置数据库编码,很有用的哦 sql_query_pre = SET NAMES utf8 ... }
MySQL 中通过 show variables like 'character_set_%'; 查看你的编码,client - connection - server - results 四项。
2) 配置中分分词:
index test1 { ... # 中文分词词典文件 uni.lib 的目录 charset_dictpath = /usr/local/mmseg3/etc/ # 启用中文分词功能 charset_type = zh_cn.utf-8 }
1) 索引
$ ./bin/indexer --all Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)] Copyright (c) 2007-2011, Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file '/usr/local/coreseek/etc/csft.conf'... indexing index 'test1'... collected 4 docs, 0.0 MB sorted 0.0 Mhits, 100.0% done total 4 docs, 193 bytes total 0.014 sec, 12906 bytes/sec, 267.48 docs/sec skipping non-plain index 'testrt'... total 3 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg total 9 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
如果你的 coreseek 安装目录下没有 etc/csft.conf 默认配置文件,使用 -c filename.conf指定配置文件,如:
$ ./bin/indexer -c etc/sphinx-min.conf.dist --all
2) 搜索
$ ./bin/search "this is a test" Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)] Copyright (c) 2007-2011, Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file '/usr/local/coreseek/etc/csft.conf'... index 'test1': query 'this is a test ': returned 0 matches of 0 total in 0.000 sec words: 1. 'this': 4 documents, 4 hits 2. 'is': 4 documents, 4 hits 3. 'a': 0 documents, 0 hits 4. 'test': 3 documents, 5 hits index 'testrt': search error: failed to open /usr/local/coreseek/var/data/testrt.sph: No such file or directory.
其中 'test': 3 documents, 5 hits 表示:有 3 条记录符合要求,命中 5 次(即出现 5 次)。
3) 搜索中文
先插入一段中文:
insert into documents(title, content) values ('锄禾日当午', '锄禾日当午,上班真辛苦,一台破电脑,一坐一下午'), ('你有尺子吗', '昨天看电视说"吸烟导致猝死"吓的我心里哆嗦!一咬牙一跺脚下定决心!"以后不看电视了"');
重建索引:
$ ./bin/indexer --all
搜索:
$ ./bin/search "以后不看电脑了" Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)] Copyright (c) 2007-2011, Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file '/usr/local/coreseek/etc/csft.conf'... index 'test1': query '以后不看电脑了 ': returned 0 matches of 0 total in 0.000 sec words: 1. '以后': 1 documents, 1 hits 2. '不': 1 documents, 1 hits 3. '看': 1 documents, 2 hits 4. '电脑': 1 documents, 1 hits 5. '了': 1 documents, 1 hits index 'testrt': search error: failed to open /usr/local/coreseek/var/data/testrt.sph: No such file or directory.
到此 sphinx 中文分词索引的基本环境完成了。有兴趣的同学可以查看 配置官方版 Sphinx 一元分词,支持中文。
Good Luck!