Linux 下配置 Sphinx(coreseek) 中文分词

http://blog.aboutc.net/linux/47/linux-configure-sphinx-chinese-word-segmentation

系统环境

  • CentOS 6.4 x86_64

下载

$ 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。

安装 mmseg

$ 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

安装 csft

$ 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

配置 csft.conf

导入测试数据:

$ 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!

你可能感兴趣的:(Linux 下配置 Sphinx(coreseek) 中文分词)