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. Oracle Goldengate REPLICAT启动时报正在运行解决办法

    stop replicate时报ERROR: opening port for REPLICAT MYREP (TCP/IP error: Connection refused). start rep ...

  2. qt下调用win32api 修改分辨率

    在头文件中添加 #include <window.h> DEVMODE DevMode; EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, ...

  3. android中的layoutparams参数使用的简单总结

    定义: 我们可以在Android的framework中的ViewGroup类里找到定义的类: public static class LayoutParams{...} 此类有如下注释: Layout ...

  4. CentOS6下Haproxy的安装配置

    Haproxy 是一个开源的负载均衡和反向代理软件,其提供了高可用的网络服务.其一般是应用于web服务,但同时也能为SMTP和终端服务等提供可靠的支持. 1.下载安装haproxy wget ftp: ...

  5. Fedora 手动删除系统中不再需要的包

    最新文章:Virson‘s Blog 1.安装yum-utils yum install yum-utils 2.使用package-cleanup --leaves列举系统中不再需要的包 packa ...

  6. ubuntu下 mysql5.6.4 +sphinx安装

    安装mysql 5.6.4 下载源码 安装cmake sudo apt-get install cmake 进入mysql源码包: 创建mysql用户与用户组 groupadd mysql usera ...

  7. 【Xamarin报错】 COMPILETODALVIK : UNEXPECTED TOP-LEVEL error java.lang.OutOfMemoryError: Java heap space

    Xamarin Android 编译报错: COMPILETODALVIK : UNEXPECTED TOP-LEVEL error java.lang.OutOfMemoryError: Java ...

  8. Oracle数据库入门——初级系列教程

  9. 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。

    #include <iostream> using namespace std; int maxCover(int* a, int n, int l) { ; ; ; while(end ...

  10. 在Java中直接调用js代码(转载)

    http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...