phpwind实现sphinx全文检索 增量

On 2010年07月23日, in linux, by netoearth

1.在论坛的数据库中创建一个表

引用
CREATE TABLE IF NOT EXISTS `search_counter` (
`counterid` int(11) NOT NULL DEFAULT ‘0’,
`max_doc_id` int(11) NOT NULL DEFAULT ‘0’,
`min_doc_id` int(10) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (`counterid`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

2.安装mmseg

引用
cd /usr/src
wget http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz
tar xzf mmseg-3.1.tar.gz
cd mmseg-3.1
./configure –prefix=/usr/local/mmseg
make
make install

3.如果数据库是gbk编码,需要先安装libiconv。如果是utf8编码则省略这一步

引用
cd /usr/src/
wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.13.tar.gz
tar xzf libiconv-1.13.tar.gz
cd libiconv-1.13
./configure
make
make install

4.安装csft
先看看有没有安装expat-devel

引用
yum -y install expat-devel
引用
cd /usr/src
wget http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz
tar xzf csft-3.1.tar.gz
cd csft-3.1
./configure –prefix=/usr/local/csft –with-mysql=/usr/local/mysql –with-mmseg=/usr/local/mmseg –with-mmseg-includes=/usr/local/mmseg/include/mmseg/ –with-mmseg-libs=/usr/local/mmseg/lib/

vi src/Makefile
在182行下面添加一行

引用
LIBS = -lm -lz -lexpat -liconv -L/usr/local/lib -lpthread
引用
make
make install

5.启动searchd进程
/usr/local/csft/bin/searchd
有可能会报找不到某个.so的错误,需要先找到该so文件,链接到/usr/lib/下
6.编辑配置文件
下面是个简单的配置文件,只做了一个索引
vi /usr/local/csft/etc/csft.conf

引用
source threads
{
type                                    = mysql
sql_host                                = localhost
sql_user                                = admin99
sql_pass                                = admin99
sql_db                                  = admin99
sql_port                                = 3306  # optional, default is 3306
sql_sock                                = /tmp/mysql.sock
sql_query_pre                           = SET NAMES gbk
sql_query_pre                           = SET SESSION query_cache_type=OFF
sql_query_pre                           = REPLACE INTO search_counter SELECT 3,MAX(tid),MIN(tid) FROM pw_threads
sql_query_range                         = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 3
sql_range_step                          = 1000

sql_query                               = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies FROM pw_threads th  WHERE th.tid > $start AND th.tid <= $end
sql_attr_uint                           = authorid
sql_attr_uint                           = hits
sql_attr_uint                           = replies
sql_attr_uint                           = fid
sql_attr_timestamp                      = postdate
sql_attr_timestamp                      = lastpost
sql_attr_uint                           = digest
}

index threadsindex
{
source                                  = threads
path                                    = /data/csft/threads
docinfo                                 = extern
charset_type                            = zh_cn.gbk
#min_prefix_len  = 0
#min_infix_len  = 2
#ngram_len = 2
charset_dictpath                        = /usr/local/csft
min_prefix_len                          = 0
min_infix_len                           = 0
min_word_len                            = 2
}

indexer
{
mem_limit                               = 128M
}

searchd
{
listen                                = 127.0.0.1:3312
log                                 = /usr/local/csft/var/log/searchd.log
query_log                           =  /usr/local/csft/var/log/query.log
read_timeout                        = 50
max_children                        = 300
pid_file                            =  /usr/local/csft/var/log/searchd.pid
max_matches                         = 50000
seamless_rotate                     = 1
preopen_indexes                     = 0
unlink_old                          = 1
}

7.建立索引
/usr/local/csft/bin/indexer –all
有可能会报找不到某个.so的错误,需要先找到该so文件,链接到/usr/lib/下
8.在后台开启对全文检索的支持

Tagged with:  

Comments are closed.