( IF(IN(newstype, 0,37) AND IN(news_weight, 39), 1, 0) ) AS endvalue
SQL的特点是由一个if语句的执行结构组成一个字段,而if里面的newstype在sphinx。通过报错的分析及对sphinx里面的字段的查看(可以通过desc 索引名查看各索引字段的特征),索引中的newstype字段是一个MVA类型的值,那报错的意思就是这里不能使用这种类型的值,但是我在另一个服务上却又能正常执行这个语句。于是怀疑是sphinx版本的问题,我使用的是coreseek4.1版本,里面的sphinx版本是Sphinx 2.0.2-dev,而另一个版本是sphinx2.2.11。所以我猜测是sphinx2.0.2版本的差异,这个版本较早,可能不支持if的MVA参数。if() arguments can not be MVA。而之前我安装的是coreseek4.1版本,于是考虑尝试使用sphinx-2.2.11.tar.gz来试验一下。本文地址:http://www.04007.cn/article/456.html,未经许可,不得转载.
附sphinx-2.2.11.tar.gz的下载地址:sphinx-2.2.11.tar.gz下载本文地址:http://www.04007.cn/article/456.html,未经许可,不得转载.
#centos6.8下sphinx2.2.11版本的安装命令如下:本文地址:http://www.04007.cn/article/456.html,未经许可,不得转载.
wget http://www.04007.cn/uploads/source/sphinx-2.2.11.tar.gz tar zxvf sphinx-2.2.11-release.tar.gz cd sphinx-2.2.11-release mkdir /opt/modules/sphinx2.2 ./configure --prefix=/opt/modules/sphinx2.2 #make的时候可能liconv的错,修改编译目录下src/Makefile文件这行:增加-liconv #LIBS = -lexpat -ldl -lm -liconv -lz -L/usr/local/lib -lrt -lpthread make make install
安装成功即可,make的时候可能liconv的错,修改编译目录下src/Makefile文件这行:增加-liconv。具体请看文章:http://www.04007.cn/article/450.html 之后我在sphinx2.2.11上架设indexer和serchd。只要和原来的coreseek下的区分端口即可。 本文地址:http://www.04007.cn/article/456.html,未经许可,不得转载.
另外在查询时碰到报错:sphinx查询异常:connection to 192.168.162.11:9311 failed (errno=10060, msg=由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)此问题是防火墙挡住端口了。执行如下命令开放对应端口,
本文地址:http://www.04007.cn/article/456.html,未经许可,不得转载.
/sbin/iptables -I INPUT -p tcp --dport 9311 -j ACCEPT
/etc/init.d/iptables status
其它在sphinx2.2.11版本中去除了一些属性:比如charset_type和max_matches
本文地址:http://www.04007.cn/article/456.html,未经许可,不得转载.
WARNING: key 'charset_type' was permanently removed from Sphinx configuration. Refer to documentation for details.
WARNING: key 'max_matches' was permanently removed from Sphinx configuration. Refer to documentation for details.
本文地址:http://www.04007.cn/article/456.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/456.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |