在Sphinx+LibMMSeg搭建中文全文搜索引擎_安装配置中安装试验了Sphinx 的使用,但是还有几方面的问题有待处理。
本篇主要是对动态增量更新的一些研究。关于分词数据的建立和前端界面的控制将在以后研究。
在利用 Sphinx 做搜索引擎的时候,一般他的索引建立构成有如下几个部分:
在实际操作中,需要为增量索引的建立创建辅助表,这样才可以记住最后建立索引的记录ID,做实际的增量部分的索引建立。
1、创建辅助表
CREATE
TABLE
`sph_counter`
(
`counter_id`
int(11)
NOT
NULL,
`max_doc_id`
int(11)
NOT
NULL,
PRIMARY
KEY
(`counter_id`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
2、在主索引的数据源中作如下方式的取数据设置
#源定义
source mysql
{
type
= mysql
sql_host
= localhost
sql_user
= root
sql_pass
= root
sql_db
= test
sql_port
= 3306
sql_query_pre
= SET NAMES utf8
sql_query_pre
= SET SESSION query_cache_type=OFF
sql_query_pre
= REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents
sql_query
= SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
sql_attr_uint
= group_id
sql_attr_timestamp
= date_added
sql_query_info
= SELECT * FROM documents WHERE id=$id
}
3、在增量索引的数据源中作如下方式的取数据设置,需要注意的是sql_query_pre要和主索引数量相同,不然查询结果不是想要的内容
#增量索引 源定义
source delta:mysql{
sql_query_pre
= SET NAMES utf8
sql_query_pre
= SET SESSION query_cache_type=OFF
sql_query_pre
=
sql_query
= SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents WHERE id>(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}
4、主索引index定义配置如下
#index定义
index mysql
{
source
= mysql
#对应的source名称
path
= /usr/local/coreseek/var/data/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
docinfo
= extern
mlock
= 0
morphology
= none
min_word_len
= 1
html_strip
= 0
charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
#charset_dictpath = etc/
charset_type
= zh_cn.utf-8
}
5、增量索引index定义 配置如下
#增量索引 index定义
index delta:mysql{
source
= delta
path
= /usr/local/coreseek/var/data/delta/
charset_dictpath = /usr/local/mmseg3/etc/
charset_type
= zh_cn.utf-8
}
6、创建更新所有索引
$sudo /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/dict/csft_mysql.conf --all --rotate
如果配置正确的话,现在辅助表sph_counter中已经添加了一条数据
7、更新增量索引
$sudo /usr/local/coreseek/bin/indexer delta -c /usr/local/coreseek/dict/csft_mysql.conf --rotate
8、合并增量索引到主索引
$sudo /usr/local/coreseek/bin/indexer --merge -c /usr/local/coreseek/dict/csft_mysql.conf --rotate
9、启动sphinx的守护进程searchd
$sudo /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/dict/csft_mysql.conf
- 用来建立索引的分词数据
- 动态增量索引更新
- 索引在前端的界面的表现使用
本篇主要是对动态增量更新的一些研究。关于分词数据的建立和前端界面的控制将在以后研究。
在利用 Sphinx 做搜索引擎的时候,一般他的索引建立构成有如下几个部分:
- 固定不变的主索引
- 增量索引重建
- 索引数据合并
在实际操作中,需要为增量索引的建立创建辅助表,这样才可以记住最后建立索引的记录ID,做实际的增量部分的索引建立。
1、创建辅助表
CREATE
)
2、在主索引的数据源中作如下方式的取数据设置
#源定义
source mysql
{
}
3、在增量索引的数据源中作如下方式的取数据设置,需要注意的是sql_query_pre要和主索引数量相同,不然查询结果不是想要的内容
#增量索引 源定义
source delta:mysql{
}
4、主索引index定义配置如下
#index定义
index mysql
{
}
5、增量索引index定义 配置如下
#增量索引 index定义
index delta:mysql{
}
6、创建更新所有索引
$sudo /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/dict/csft_mysql.conf --all --rotate
如果配置正确的话,现在辅助表sph_counter中已经添加了一条数据
7、更新增量索引
$sudo /usr/local/coreseek/bin/indexer delta -c /usr/local/coreseek/dict/csft_mysql.conf --rotate
8、合并增量索引到主索引
$sudo /usr/local/coreseek/bin/indexer --merge -c /usr/local/coreseek/dict/csft_mysql.conf --rotate
9、启动sphinx的守护进程searchd
$sudo /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/dict/csft_mysql.conf