您的位置:首页 > 其它

SPHINX做增量索引更新

2016-07-11 10:35 399 查看
在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      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: