在利用 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
- 固定不变的主索引
- 增量索引重建
- 索引数据合并
在实际操作中,需要为增量索引的建立创建辅助表,这样才可以记住最后建立索引的记录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
本文深入解析了使用Sphinx构建搜索引擎时的关键步骤,包括创建辅助表、设置主索引与增量索引的数据源、配置索引定义、创建更新所有索引、更新增量索引以及合并增量索引到主索引等。通过具体实例,阐述了如何高效地管理和优化搜索索引。
487

被折叠的 条评论
为什么被折叠?



