sphinx使用小记之使用小结
sphinx使用小记之使用小结
在使用sphinx的过程中有出现一些问题,也有注意事项,做一个备忘。
一.问题及解决方案
Q1:采用setFilter过滤的时候出现
query is non-computable(sing NOT operator)
原因:在过滤等操作的字段在配置文件sphinx.conf中没有定义。
Q2:采用扩展模式进行全文检索时出现
查询结果为空,不报错
原因:在进行全文检索的时候采用扩展模式没有配合设置相应的属性;'@AppID "-5"'这种扩展模式要搭配setMatchMode(SPH_MATCH_EXTENDED)使用
Q3:
针对整数的注意事项
1>正整数采用sql_attr_uint(32位无符号整数)即可
2>负整数采用sql_attr_bigint(64位有符号整数)即可
Q4:
过滤时间在配置文件中通常采用UNIX_TIMESTAMP,在PHP中利用API时怎样处理?
解决:
使用strtotime将时间字符串转化成时间戳
Q5:
ERROR: index 'oss_test_index': sql_range_query: Got timeout reading communication packets
原因:超过了数据库的超时时间
Q6:
searchd error: per-query max_matches=2000 out of bounds (per-server max_matches=1000)
原因:设置的最大limit值不能超过配置文件的maxmatches的值,因此修改值需要
注意的是如果在设置的时候$sphinx->setLimits(start,len,max),不设置最大的max系统还是默认为1000
最妥善的还是$sphinx->setLimits(($pageNo-1)*$pageSize,$pageSize,$pageNo*$pageSize
Q7:
如何排序
解决:
$this->sphinx->setSortMode(SPH_MATCH_EXTENDED,"Daily desc,AdID");
Q8:
出现断言失败的问题
原因:大多数是因为参数不是要求的类型,因此要转换成该类型,通常需要int强制转换
Q9:
可忽略(在重整广告报表的过程中出现查询数据和导出数据不一致的问题)
原因:参数没有转化为int类型(setLimits())
Q10:
在只更新增量索引的情况下,,并没有将新增的数据插入检索到的文件中
原 因:增量索引分区的范围和主索引的分区范围不一样,主索引是min(id)~counter表的max_id,增量索引的范围是counter表的 max_id到statappadoss表的最大id,所以增量索引在继承主索引时需要重写sql_query_range的值
Q11:
多个索引一起引用的时候,为什么会出现返回的全文检索字段意义不明呢
原因:索引中定义的全文检索字段sql_field_string不同
Q12:
将 增量索引的结果合并到主索引中的时候出现:attribute mismatch (me=/var/lib/sphinxsearch/data/oss_test_index, in=/var/lib/sphinxsearch/data/oss_test_index_throttled, idx=11, myattr=uint rate_id:32@640, inattr=bigint is_ex
原因:主索引和增量索引查询得到的结果字段的顺序和属性必须是一致的。
Q13:
searchd error: client version is higher than daemon version .
原因:是因为客户端版本与服务器版本不同。。。这时候才想起来,服务器是很早之前安装的3.24的版本,现在都4.1了,我本地下载的4.1肯定对不上了~~所以只要用服务器端的sphinxapi替换下就可以了~~
Q14:在使用非!检索的时候出现
query is non-computable(single NOT operator)
原因:全文索引不支持单个操作,因此需要在索引文件里面增加一个能够检索所有文件的全文检索列
如下:
select ...’select_all‘ as dummy...=》全文检索列为dummy,值为select_all.这样就可以检索所有的documents
再从所有documents中过滤掉!的值,如下:
$sphinx->Query('(@dummy SELECT_ALL)(@AppID !"-5")','oss_test_index')
Q15:
对于一个字段既有字符串,又有负数,还有正数的情况下怎样解决?
方案一:如问题十四所讲,单独使用全文索引(十四所述方法可以查询负数)
方案二:在索引中增加同一列(添加别名),一列定义bigint类型用作整数(正数和负数)过滤
另外一列用作全文索引(字符串的查询)。如下:
a.AppID,a.AppID as AppIDString
sql_attr_bigint =AppID
sql_field_string = AppIDString
$sphinx->setFilter('AppID',array(-5),true);
$result = $sphinx->Query('@AppIDString com.moji.MojiWeather','oss_test_index');
//如上,联合使用
二.
索引文件需要定时重建来更新数据,主索引文件根据情况可较长时间建一次或者不建,增量索引可以酌情不长的一段时间建一次。在定时见索引的过程中用到
Linux系统的定时器crontab来调用shell脚本(shell脚本可以放在sphinxsearch目录下)
主索引脚本:build_main_index.sh
#!/bin/sh
#停止正在运行的searchd
#/etc/init.d/sphinxsearch stop >> /var/log/sphinxsearch/searchd.log
#建立主索引
indexer oss_test_index --rotate>> /var/lib/sphinxsearch/data/oss_test_index.log
#启动守护程序
#/etc/init.d/sphinxsearch start >> /var/log/sphinxsearch/searchd.log
sphinx使用小记之使用小结的更多相关文章
- avalonJS-源码阅读(3) VMODEL
来源 avalon的重头戏.终于要到我最期待的vmodel了. ps:这篇博文想做的全一点,错误少一点,所以会有后续的更新在这篇文章中. 状态:一稿 目录[-] avalon dom小结 数据结构 观 ...
- avalonJS-源码阅读(三) VMODEL
avalon的重头戏.终于要到我最期待的vmodel了. ps:这篇博文想做的全一点,错误少一点,所以会有后续的更新在这篇文章中. 状态:一稿 目录[-] avalon dom小结 数据结构 观察者模 ...
- 小记:vue 及 react 的工程项目入口小结及 webpack 配置多页面应用参考
一.前言 闲暇时间,看了下前端的基础知识,有幸参与了公司公众号项目前面的一个阶段,学习到了一些前端框架的相关知识 小结了一下 自己练习通过新建一个个文件组织起项目的过程中的一些理解 二.项目入口 vu ...
- coreseek+sphinx+mysql+thinkphp整合
1.安装coreseek 1.1首先升级或安装系统依赖库 yum install make gcc g++ automake libtool mysql-client libmysqlclient15 ...
- 东哥读书小记 之 《MacTalk人生元编程》
一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...
- Cocos2d-x项目移植到WinRT/Win8小记
Cocos2d-x项目移植到WinRT/Win8小记 作者: K.C. 日期: 11/17/2013 Date: 2013-11-17 23:33 Title: Cocos2d-x项目移植到WinRT ...
- Jenkins小菜初次使用小记
title: Jenkins自动集成小记 Jenkins是用来自动构建任务的,也许你还不知道什么叫自动构建任务,它的意思是可以针对某个任务进行自动化,比如你开发的某个软件,每次写完代码提交到githu ...
- JanusGraph 图数据库安装小记 ——以 JanusGraph 0.3.0 为例
由于近期项目中有使用图数据的需求,经过对比,我们选择尝试使用 JanusGraph.本篇小记记录了我们安装 JanusGraph 以及需要一起集成的 Cassandra + Elasticsearch ...
- vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结
vue—你必须知道的 目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...
随机推荐
- How to import library ?
Android Studio: Download or git the library. (for example: the library folder named ActionBarSherloc ...
- 封装一个UILabel圆形边框显示进度
封装了一个UILabel并让它显示圆形的边框,UILabel上面显示百份比,而边框则用Animation绘制到整个圆占指定百分比的点. 这只是我个人想的继承一个UILabel实现的,用到两个CASha ...
- js 判断微信浏览器
上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打 ...
- linux 笔试题
一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 来 ...
- CodeWarrior环境下中断使用
对于飞思卡尔CodeWarrior的中断使用,一般有3种方法: 1.把#pragma TRAP_PROC放在中断程序前面,并把中断向量表放到*.prm. 例如: #pragma TRAP_PROC v ...
- 使用Object的wait,notify,notifyAll做线程调度
我们知道java中的所有类的祖先都是Object,Object类有四个个方法wait(),wait(long timeout),notify(),notifyAll(),这四个方法可以用来做线程的调度 ...
- android自定义viewgroup之我也玩瀑布流
先看效果图吧, 继上一篇<android自定义viewgroup实现等分格子布局>中实现的布局效果,这里稍微有些区别,每个格子的高度不规则,就是传说的瀑布流布局,一般实现这种效果,要么用第 ...
- C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件
大家可以到http://www.icsharpcode.net/opensource/sharpziplib/ 下载SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, ...
- 理解WebSocket
WebSocket的动机是什么? 目前的Web通信使用的是HTTP协议,HTTP协议是基于TCP协议的应用层协议,HTTP协议的工作模式是request/response模式.在一次通信中,必须首先由 ...
- Unitils集成DBUnit、Spring-单元测试
Unitils集成DBUnit.Spring-单元测试 1.maven-pom文件中引入相关jar包 <!-- Unitils -dbunit.Spring --> <depende ...