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 ...
随机推荐
- End of HTML blink tag
Recently I have read a news which said "Firfox 23 nixes support for outdated blink HTML tag&quo ...
- SQL SERVER2012中使用游标来备份数据库
在SQL SERVER中,添加JOB,可以使用以下语句设置定期备份数据库. DECLARE @name VARCHAR(50)--databasename DECLARE @path VARCHAR( ...
- C用函数指针模拟重载 C++重载
C中为什么不支持重载,即同一作用域内不允许出现同名函数? 我们都知道重载是c++面向对象的特性.c语言中是不存在的.所谓重载简单来说就是一个函数名可以实现不同的功能,要么输入参数不同或者参数个数不同, ...
- WPF使用扩展屏幕
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 用对 gitignore
使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中.理解 gitignore 的 ...
- 引入HBase依赖包带来的麻烦
在一个项目里用到HBase做底层存储,使用maven来管理相关Jar包依赖,用maven来管理依赖包,特别不爽的就是他会将你引入Jar包自己的依赖都搞进来,经常会出现一些类和方法冲突找不到等状况.这次 ...
- 最近新装系统windows8.1+Mac。。。还没装驱动就遇到一堆问题。。。
---恢复内容开始--- 1,刚开始装好了,后来莫名看不到磁盘了,原因:64位mac盘会丢失盘符,所以macdrive也看不到...解决:(将AF改为06,修改内容后改回AF,早知道这么简单就不用重新 ...
- HDU 3487 Play with Chain(Splay)
题目大意 给一个数列,初始时为 1, 2, 3, ..., n,现在有两种共 m 个操作 操作1. CUT a b c 表示把数列中第 a 个到第 b 个从原数列中删除得到一个新数列,并将它添加到新数 ...
- Form personization(Form 个性化)报无权限
总部的同事利用form personization对工单的一些Form做了个性化,发现可能设的有问题,造成用户无法关工单.想要看一下她是怎么设的,可报没权限.经过研究发现,把个人Profile 的 U ...
- iBatis.Net(C#)系列Demo源码
iBatis.Net(C#)系列一:简介及运行环境源码 [下载] iBatis.Net(C#)系列二:SQL数据映射源码 [下载] iBatis.Net(C#)系列三:数据库查询源码 [下载]