Discuz + Sphinx (CoreSeek) 全文搜索实现
Sphinx配置文件+Discuz补充文件下载: http://sphinx-for-discuz.googlecode.com/files/sphinx_for_discuz7.zip
这篇文章主要介绍用sphinx(csft)做discuz论坛的全文搜索,操作系统为linux,如果需要windows下的可直接参考:http://www.coreseek.cn/
sphinx + mmseg安装,这里的sphinx指的是csft,详见:http://www.coreseek.cn/
安装 mmseg :
# tar -zxvf mmseg-3.1.tar.gz
# cd mmseg-3.1
# ./configure --prefix=/usr/local/mmseg
# make
# make install
# make clean
# cd ../
生成词典:
如果这个词库词量过小,可到搜狗上下载词库: http://pinyin.sogou.com/dict/list.php
很多词库找不到TXT版的下载,可以直接通过地址: http://pinyin.sogou.com/dict/download_txt.php?id=词库id ,来下载
cp ciku.txt.uni /usr/local/mmseg/dict/uni.lib
安装 csft :
# tar -zxvf csft-3.1.tar.gz
# cd csft-3.1
# ./configure \
--prefix=/usr/local/sphinx \
--with-mysql=/usr/local/mysql-5.1.28-rc \
--with-mmseg=/usr/local/mmseg \
--with-mmseg-includes=/usr/local/mmseg/include/mmseg/ \
--with-mmseg-libs=/usr/local/mmseg/lib/ \
--with-mysql-includes=/usr/local/mysql-5.1.28-rc/include/mysql/ \
--with-mysql-libs=/usr/local/mysql-5.1.28-rc/lib/mysql/
注意:修改/usr/local/mysql-5.1.28-rc为相应的mysql目录
------------------------------------------------------
生成索引:
indexer --merge DSTINDEX SRCINDEX [--rotate]
CLI测试:
searchd:
------------------------------------------------------
配置文件:dz_data.conf
注意:修改source dzbbs和source threads 中的sql_host、sql_user、sql_pass、sql_db、sql_port参数,配置文件是按discuz的默认表前缀写的sql,所以修改了表前缀的请将cdb_替换为更改后的前缀。
首次运行:
/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf threads
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf
如果论坛数据量比较大,这次执行可能比较耗时,这里生成的就是主索引。
为了及时搜索到新帖,使用增量索引,用cron来实现,使用crontab -e( root )或crontab -u user -e来添加。
下面的配置代表每天0点到2点,6点到23点这段时间中每5分钟生成一次增量索引,每天4点合并一次主索引和增量索引
全部帖子:
0 4 * * * /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/dz_data.conf dzbbs_merge --rotate && /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/dz_data.conf --merge dzbbs dzbbs_merge --rotate
*/5 0-2,6-23 * * * /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/dz_data.conf threads_delta --rotate
10 4 * * * /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/dz_data.conf threads_merge --rotate && /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/dz_data.conf --merge threads threads_merge --rotate
简单的说下crontab中前两个位置的配置,
*/5 0-2,6-23
前面的位置表示分钟,*/5代表每五分钟,如果是*则代表每分钟,也可以是0-59之间的具体整数,如10 4代表4点10分执行,这里可以根据需要调整;
后面的位置表示小时,0-2,6-23代表0点到2点、6点到23点,当然也可以写成*来实现每小时都执行,这里主要是考虑到2点到6点这段时间发帖量很小;
Incoming search terms:
- discuz sphinx
- sphinx discuz
- discuz 全文搜索
- discuz Coreseek
- 2010-03-08|AndysBlog
- Coreseek 安装路径 Discuz
- pressureafw
- ratherv9a
- mine1i2
Andy,在否?新手在使用WP,发现中文TAG显示有问题,知道是编码的问题,不过不知道怎么弄,调整了下,转码也没用。(问题状况:中文别名或中文标签的文章,在标签列表中无法打开文章),麻烦你指导下,谢谢了
问题解决了,呵呵,以后有问题再请教你
能修改下支持uchome就好了。