sphinx增量索引

来源:互联网 发布:淘宝助理去除被修改 编辑:程序博客网 时间:2024/04/30 21:52
在Sphinx+LibMMSeg搭建中文全文搜索引擎_安装配置中安装试验了Sphinx的使用,但是还有几方面的问题有待处理。
  1. 用来建立索引的分词数据
  2. 动态增量索引更新
  3. 索引在前端的界面的表现使用

本篇主要是对动态增量更新的一些研究。关于分词数据的建立和前端界面的控制将在以后研究。

在利用 Sphinx 做搜索引擎的时候,一般他的索引建立构成有如下几个部分:
  1. 固定不变的主索引
  2. 增量索引重建
  3. 索引数据合并

在实际操作中,需要为增量索引的建立创建辅助表,这样才可以记住最后建立索引的记录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<=(SELECTmax_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>(SELECTmax_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
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 妹子内裤被看了怎么办 都已婚却相爱了怎么办 喝了很烫的水怎么办 金毛幼犬不吃狗粮怎么办 4孩子受凉了呕吐怎么办 尿多是什么原因造成的怎么办 5岁宝宝老尿床怎么办 五岁了还尿床怎么办 2岁宝宝晚上尿床怎么办 胃疼腹泻稀水怎么办 网购成瘾怎么办 知乎 军人被警察打了怎么办 对高院再审不服怎么办 对高院判决不服怎么办 白色砂锅烧黑了怎么办 手机被偷关机了怎么办 狗被眼镜蛇咬了怎么办 穿高跟鞋脚趾头长茧怎么办 穿皮鞋脚底板疼怎么办 鞋子穿了脚趾痛怎么办 脚被鞋子磨肿了怎么办 脚趾磨出茧子怎么办疼 脚掌长茧走路疼怎么办 脚底磨出茧子疼怎么办 手指上写字有茧怎么办 写字磨的茧子疼怎么办 脚上的大脚骨疼怎么办 脸特别烫 又红怎么办 6岁宝宝发音不准怎么办 3岁宝宝发音不准怎么办 5岁宝宝发音不准怎么办 4岁宝宝发音不准怎么办 被螃蟹夹出血了怎么办 苹果6主板坏了怎么办 键盘掉了一个键怎么办 汽车屏幕砸坏了怎么办 电视的屏幕坏了怎么办 高三孩子早恋该怎么办 高一早恋家长该怎么办 高二早恋家长该怎么办 200斤新娘抱不动怎么办