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
用来建立索引的分词数据
动态增量索引更新
索引在前端的界面的表现使用
本篇主要是对动态增量更新的一些研究。关于分词数据的建立和前端界面的控制将在以后研究。
在利用 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
相关文章推荐
- 关于Spring的资源问题
- 目前在线教育网站都有哪些分类?
- Hadoop datanode Datanode denied communication with namenode错误及解决
- php解析xml 的四种简单方法(附实例)
- 浅谈Java设计模式(十六)迭代子模式(Iterator)
- css中padding与margin
- Hadoop里如何Mysql编程
- JavaScript中的setInterval用法
- HUD 2037 今年暑假不AC
- Spring--RowMapper
- 关于socket Send 代码
- 在线教育和传统教育相比有什么优势
- Android学习笔记(二)—— Toast
- URL传入带有%的参数的解决方法
- 【Android】切换Activity时使用Bundle封装Map对象
- 【NOIP2016模拟赛No.1】 最小密度路径
- javaweb
- mybatis 的mapper映射文件返回一个map
- NSURLSession学习笔记(三)Download Task
- SSH环境 jsp url跳转,带中文参数乱码问题