sphinx使用小记之使用小结

摘自:http://www.68idc.cn/help/jiabenmake/qita/20150124187789.html
在使用sphinx的过程中有出现一些问题,也有注意事项,做一个备忘。一.问题及解决方案Q1:采用setFilter过滤的时候出现queryisnon-computable(sing&..
 

在使用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使用小记之使用小结的更多相关文章

  1. avalonJS-源码阅读(3) VMODEL

    来源 avalon的重头戏.终于要到我最期待的vmodel了. ps:这篇博文想做的全一点,错误少一点,所以会有后续的更新在这篇文章中. 状态:一稿 目录[-] avalon dom小结 数据结构 观 ...

  2. avalonJS-源码阅读(三) VMODEL

    avalon的重头戏.终于要到我最期待的vmodel了. ps:这篇博文想做的全一点,错误少一点,所以会有后续的更新在这篇文章中. 状态:一稿 目录[-] avalon dom小结 数据结构 观察者模 ...

  3. 小记:vue 及 react 的工程项目入口小结及 webpack 配置多页面应用参考

    一.前言 闲暇时间,看了下前端的基础知识,有幸参与了公司公众号项目前面的一个阶段,学习到了一些前端框架的相关知识 小结了一下 自己练习通过新建一个个文件组织起项目的过程中的一些理解 二.项目入口 vu ...

  4. coreseek+sphinx+mysql+thinkphp整合

    1.安装coreseek 1.1首先升级或安装系统依赖库 yum install make gcc g++ automake libtool mysql-client libmysqlclient15 ...

  5. 东哥读书小记 之 《MacTalk人生元编程》

         一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...

  6. Cocos2d-x项目移植到WinRT/Win8小记

    Cocos2d-x项目移植到WinRT/Win8小记 作者: K.C. 日期: 11/17/2013 Date: 2013-11-17 23:33 Title: Cocos2d-x项目移植到WinRT ...

  7. Jenkins小菜初次使用小记

    title: Jenkins自动集成小记 Jenkins是用来自动构建任务的,也许你还不知道什么叫自动构建任务,它的意思是可以针对某个任务进行自动化,比如你开发的某个软件,每次写完代码提交到githu ...

  8. JanusGraph 图数据库安装小记 ——以 JanusGraph 0.3.0 为例

    由于近期项目中有使用图数据的需求,经过对比,我们选择尝试使用 JanusGraph.本篇小记记录了我们安装 JanusGraph 以及需要一起集成的 Cassandra + Elasticsearch ...

  9. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

随机推荐

  1. Android开发(二十八)——基础功能函数

    /** * 判断事件是否在控件中 * * @param view * @param ev * @return * @see http://m.blog.csdn.net/blog/aygxylxk/8 ...

  2. myeclipse9或myeclipse10安装svn的方法

    下载最新的SVN包   site-1.6.5.zip 从中解压出features与plugins文件夹,复制到C:\toBeInstalledSVN 里面,其它的*.xml文件不要 复制下列java代 ...

  3. nlog(n)解动态规划--最长上升子序列(Longest increasing subsequence)

    最长上升子序列LIS问题属于动态规划的初级问题,用纯动态规划的方法来求解的时间复杂度是O(n^2).但是如果加上二叉搜索的方法,那么时间复杂度可以降到nlog(n).  具体分析参考:http://b ...

  4. 用Eclipse运行Android版APP(PhoneGap)时出现:Unable to execute dex: Multiple dex files define

    这两天遇到点小问题,做个记录: 症状:运行,调试时都报:Unable to execute dex: Multiple dex files define错误,发布后的APP安装到手机后一运行,就提示: ...

  5. .NET Framework 类库

    .NET Framework 类库 MSDN == V2.0 == .NET Framework 类库是一个由 Microsoft .NET Framework SDK 中包含的类.接口和值类型组成的 ...

  6. webClient请求JAVA超时解决方案

    private class MyWebClient: WebClient { protected override WebRequest GetWebRequest(Uri uri) { WebReq ...

  7. ivqBlog 开源博客 (angularjs + express + mongodb)

    转向做全职前端差不多一年的时间了,其中学习了构建工具grunt,gulp,angularjs,coffeescript,less,sass,自己想要做全栈开发,所以自学了mongodb,nodejs, ...

  8. Microsoft 2013 新技术学习笔记 四

    在继续学习Model的实践经验之前,先思考一下Controller和View的实践原则在本次系统重构中的应用,我手上是一个后台管理系统(不是门户系统.不是具体业务系统),通俗点讲就是给企业的运维人员用 ...

  9. cordova 学习笔记

    0.sdk安装 http://spring.io/guides/gs/android/ 1.安装(node.js 需要安装https://nodejs.org/) on OS X and Linux: ...

  10. 自制Console线(已测试CISCO3560可用)

    D9的顺序是5口在上,4口在下.从右到左分别是1-5,6-9. 5 4 3 2 1 o o o o o o o o o 9 8 7 6 用万用表量出D9的口的对应颜色.然后按照下面的表.把颜色填写上. ...