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 ...
随机推荐
- emoji和utf8mb4字符集
mysql 的 utf8 不支持 emoji,需要修改设置为utf8mb4 <?php 'mysql' => [ 'charset' => 'utf8mb4', 'collation ...
- Android TabActivity中onKeyDown无效问题
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { //按下键盘上返回 ...
- WebApp开发之--"rem"单位(转)
随着web app的兴起,rem这是个低调的css单位,近一两年开始崭露头角,有许多朋友对于它的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我认为rem是用来做web app它绝对是 ...
- [转载]寻找两个有序数组中的第K个数或者中位数
http://blog.csdn.net/realxie/article/details/8078043 假设有长度分为为M和N的两个升序数组A和B,在A和B两个数组中查找第K大的数,即将A和B按升序 ...
- WPF打印票据
最近工作的内容是有关于WPF的,整体开发没有什么难度,主要是在打印上因为没有任何经验,犯了一些难,不过还好,解决起来也不是很费劲. WPF打印票据或者是打印普通纸张区别不大,只是说打印票据要把需要打的 ...
- Webstorm 11 注册/破解方法
激活时选择第二个,也就是License server在下面输入框中填http://idea.lanyus.com就行了
- 使用 crosswalk-cordova 打包sencha touch 项目,再也不用担心安卓兼容问题!
国内的安卓手机品牌众多,安卓操作系统碎片化也很严重,我们使用sencha touch 开发的应用不可避免的出现了各种无解的兼容性问题. 有时候我就在想,有没有既能支持cordova,又能让我们把Chr ...
- HMM MEMM & label bias
(http://blog.csdn.net/xum2008/article/details/38147425) 隐马尔科夫模型(HMM): 图1. 隐马尔科夫模型 隐马尔科夫模型的缺点: 1.HMM只 ...
- MyEclipse自动生成hibernate实体类和配置文件攻略
步骤1:找到导航栏里面的window--showView然后输入db brower,打开数据库浏览窗口步骤2:在数据库浏览窗口里只有一个Myeclipse自带的数据库,该数据没有用,我们在空白的地方右 ...
- laravel 5.3 学习之路——路由(资源,别名)
laravel的路由定义中,其中route:resoure(),可以直接定义类似restful风格的URL 例如:Route::resource('system/role','System\RoleC ...