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. Target runtime com.genuitec.runtime.generic.jee50 is not defined

    导入别人的工程,发现报错Target runtime com.genuitec.runtime.generic.jee50 is not defined   解决方法:1. 找到工程目录的.setti ...

  2. WCF客户端承载

    http://www.cnblogs.com/wengyuli/archive/2010/12/27/1918109.html参考 Hi victory,   你提出的问题很好,这个问题,相信很多人学 ...

  3. Filter之——GZIP全站压缩

    GZIP压缩:将压缩后的文本文件,发送给浏览器,减少流量. 一.进行gzip压缩条件: 1.请求头:Accept-Encoding : gzip  告诉服务器,该浏览器支持gzip压缩. 2.响应头: ...

  4. 使用Eclipse PDT + Xampp搭建Php开发环境

    最新文章:Virson's Blog Eclipse版本:Eclipse Luna Service Release 2 (4.4.2) Xampp版本:XAMPP for Windows 5.6.8 ...

  5. Sql Server:不允许 ASSIGNMENT 语句中包含 FOR XML 子句

    编写函数的时候遇到“不允许 ASSIGNMENT 语句中包含 FOR XML 子句”错误,开始以为数据库函数里不可以写 FOR XML 子句,仔细看了看总觉得这么写别扭索性改了一种写法就通过了. BE ...

  6. 常用SQL语句备忘录

    1.---表中有重复记录用SQL语句查询出来 select * from Recharge where RechargeSerial in (select RechargeSerial from Re ...

  7. c++ 职责链模式(Chain of Responsibility)

    职 责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处 理它为止.其思想很简单,考虑员工要求加薪.公司的管 ...

  8. IIS+PHP+MYSQL安装配置

    首先下载php-5.2.0-win32.zip,mysql-noinstall-5.0.22-win32.zip和phpMyAdmin-2.9.1.1-all-languages.zip.这三个文件的 ...

  9. debian+apache+acme_tiny+lets-encrypt配置笔记

    需要预先将需要申请ssl的域名指向到服务器,此方法完全通过api实现,好处是绿色无污染,不需要注册账号,不会泄露私人信息环境为 debian7+apache apt-get install apach ...

  10. PS1--cannot be loaded because the execution of scripts is disabled on this system

    在nagiosXI上,通过nsclient++ 引用plugin “check_ms_win_disk_load”(https://outsideit.net/check-ms-win-disk-lo ...