sphinx增量索引的一个问题

2015-01-24信息快讯网

很早使用coreseek来实现对内容的搜索,并使用主索引+增量索引来实现新发的内容很快能搜索到,使用一直挺稳定。

但最近发现增量的总是搜索不到,今天看了下运行日志,有如下提示:

[Sun Apr 17 19:30:01.876 2011] [ 3400] WARNING: rotating index 'news_delta': cur to old rename failed: rename /dev/shm/sphinx/data/news_delta.spa to /dev/shm/sphinx/data/news_delta.old.spa failed: No such file or directory

[Sun Apr 17 19:30:01.881 2011] [ 3400] WARNING: rotating index 'article_delta': cur to old rename failed: rename /dev/shm/sphinx/data/article_delta.spa to /dev/shm/sphinx/data/article_delta.old.spa failed: No such file or directory

为提高增量索引速度,我将增量索引存放在/dev/shm中,看了下/dev/shm/sphinx/data/目录下的内容:
-rw-r--r-- 1 root root 385762 Apr 17 19:21 article_delta.new.spd
-rw-r--r-- 1 root root 3713 Apr 17 19:21 article_delta.new.sph
-rw-r--r-- 1 root root 46260 Apr 17 19:21 article_delta.new.spi
-rw-r--r-- 1 root root 0 Apr 17 19:21 article_delta.new.spk
-rw-r--r-- 1 root root 0 Apr 17 19:21 article_delta.new.spm
-rw-r--r-- 1 root root 261402 Apr 17 19:21 article_delta.new.spp

奇怪,应该要有article_delta.spd等文件,不应该是.new的文件。
增量索引时是使用--rotate参数的,
 
bin/indexer --rotate news_delta 
bin/indexer --rotate article_delta 

在rotate时,需要将原article_delta.spa重命名为article_delta.old.spa,然后将article_delta.new.spa重命名为article_delta.spa,再通知searchd重启完成rotate。

想起应该是前几天凌晨重启过机器,原文件都丢了,导致无法rotate:(

解决方法:
运行:bin/indexer article_delta
创建了article_delta.spd,sph等文件。

再运行:bin/indexer article_delta --rotate
运行日志提示:rotating index 'article_delta': success
正常了!

把要做增量索引的命令写了个脚本,放在rc.local中,这样重启过机器就不会再出现这种问题了。
 
echo "start:" $(date +"%y-%m-%d %H:%M:%S") 
cd /usr/local/coreseek/bin 
./indexer news_delta 
./indexer article_delta 
echo "end:" $(date +"%y-%m-%d %H:%M:%S") 
关于Sphinx创建全文检索的索引介绍
使用Sphinx对索引进行搜索
解析coreseek for sphinx的使用
深入解析php之sphinx
LotusPhp笔记之:Logger组件的使用方法
nginx+php-fpm配置文件的组织结构介绍
asp.net 组合模式的一个例子
记录PHP错误日志 display_errors与log_errors的区别
解析百度搜索结果link?url=参数分析 (全)
仿Aspnetpager的一个PHP分页类代码 附源码下载
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
php中explode与split的区别介绍
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
ThinkPHP3.0略缩图不能保存到子目录的解决方法
ThinkPHP关联模型操作实例分析
Linux下CoreSeek及PHP扩展模块的安装
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
php模块memcache和memcached区别分析
批量获取memcache值并按key的顺序返回的实现代码
提高define性能的php扩展hidef的安装和使用
ThinkPHP自动验证失败的解决方法
php自动获取字符串编码函数mb_detect_encoding
允许phpmyadmin空密码登录的配置方法
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error
PHP sprintf()函数用例解析
PHP中调用ASP.NET的WebService的代码
The specified CGI application misbehaved by not returning a complete set of HTTP headers
PHP删除特定数组内容并且重建数组索引的方法.
php模拟asp中的XmlHttpRequest实现http请求的代码
php中获取关键词及所属来源搜索引擎名称的代码
php网站来路获取代码(针对搜索引擎)
用PHP查询搜索引擎排名位置的代码
8月上海个人房贷增量创新高 银行严控商业地产贷款
©2014-2024 dbsqp.com