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 ...
随机推荐
- [Javascript] Decorators in JavaScript
First, what is 'High Order function', basic just a function, inside the function return another fuct ...
- WebStorm11 注册
WebStorm11 注册 http://2.idea.lanyus.com/
- GitHub上排名前100的Android开源库介绍(来自github)
本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍,至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果,然后过滤了 ...
- 本博客停止更新,移至purecpp.org
声明:本博客停止更新,迁移至C++开源社区purecpp.org, 欢迎持续关注!
- SAP ECC MM 配置文档
SAP ECC 6.0 Configuration Document Materials Management (MM) Table of Content TOC \o \h \z 1. Genera ...
- 电商O2O-11种最佳运营模式
免费模式,是在这种矛盾下应运而生的新型模式.免费模式在未来的几年中,将会不断的渗透到各个行业中,这不单单是加速了行业内部的洗牌速度,更是加速了行业之间的洗牌速度. 未来,免费模式会让行业之间的界限变得 ...
- 转载好文:如何进行基于情境数据的个性化EDM数据营销
根据Adobe和DMA(Direct Marketing Association)的<实时营销洞察报告> (Real-Time Marketing Insights Study),77%的 ...
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- [转]使用Xcode 4发布App 实例操作
使用xcode 4发布app 实例操作是本文介绍的内容,不多说,我们直接进入话题. 1.iOS Provisioning Portal 和iTunes Connect 没有变,下载与安装.mobile ...
- Rails4 中 因为secret key 引起在production环境下无法运行
错误信息 Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` ...