博客列表 >centos下配置安装及php调用sphinx

centos下配置安装及php调用sphinx

chaochao的博客
chaochao的博客原创
2018年01月27日 17:39:171241浏览

一、第一步是安装编译工具,当然,如果你以前安装过编译工具请忽略此条;

命令:  yum -y install make gcc g++ gcc - c++ libtool autoconf imake mysql-devel libxml-devel expat-devel

二、安装sphinx

切换到你想存放压缩文件的目录 (例如: cd /usr/local/src ),下载命令:  wget http://sphinxsearch.com/files/sphinx-2.1.1-beta.tar.gz

解压 :  tar zxvf sphinx-2.1.1-beta.tar.gz 

检查当前系统是否满足要求: cd sphinx-2.1.1-beta

        命令2:  ./configure --prefix=/usr/local/sphinx

    4.编译: make     编译安装: make install

    5.备份配置文件: a.进入到配置文件所在目录: cd /usr/local/sphinx/etc

                               b.复制并命名: cp sphinx.canf.dist sphinx.conf

6.修改配置文件

a.导入sphinx准备的测试数据,包括test数据库和两张表(此时请确保mysql已启用): mysql -uroot -proot </usr/local/sphinx/etc/example.sql   (-u -p 后面接上自己的mysql账户密码)

b.修改配置文件  vim /usr/local/sphinx/etc/sphinx.conf

    vim编辑器搜索命令 /sql_host  (依据自己服务器情况填写响应参数即可)

    sql_query_pre = SET NAMES utf8   (去除#)

   #exceptions = /data/exceptions.txt  (加上#)

7.创建索引文件: cd /usr/local/sphinx/bin

 .indexer -all

(若是实际项目使用,在生成索引之后,还需打开sphinx进程: /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf )此处可能报进程已存在的错误:FATAL:failedto lock....(省略)   用命令ps -elgrep searched找到进程号,然后用 kill pid 杀掉进程即可;

8.测试sphinx全文检索功能(这里搜索this) ./search this  此处若执行无效先切入到sphinx目录下;

若是报错:index 'test1': search error: query too complex, not enough stack (thread_stack=1201361K or higher required).

请按上文的方式修改配置文件: #sql_query_info          = SELECT * FROM documents WHERE id=$id (加#注释掉此条sql)

三、php的调用

确定好自己的sphinx是正常运行状态,并已通过 ./search 关键字   的测试;(此处是指在配置好实际项目要用的数据库及表而不是test数据库)

将sphinx解压的目录中将 sphinxapi.php 拷贝到自己的项目目录(命令参考:cp /usr/local/src/sphinx-2.1.1-beta/api/shpinxapi.php /var/www/html/sphinxapi.php);

实例化类及调用:(以下参数仅根据上述操作配置,一切详细参数以个人设置为主)

include_once 'sphinxapi.php';       

$sc = new SphinxClient();//实例化类

$sc->SetServer("localhost",9312);//指定服务信息,

$sc->SetConnectTimeout(10);//设置连接的超时时间

$sc->SetMaxQueryTime(30);//设置最大的查询时间

$sc->SetArrayResult(true);//设置sphinx返回结果的类型

$sc->SetMatchMode(SPH_MATCH_ANY);//设置切词方式

$result = $sc->Query($keyword,"*");//查询索引文件,返回主键值,此处最好先打印所以数据,查看数组结构

四、本文操作及实际调用时可能遇见的问题及解决方法

WARNING:Attrubute count is 0:swutching to none docinfo

解决方法: 修改配置文件: sql_attr_uint = id (给此处配置添加非主键整型字段参数,改完记得重新生成索引值)

生成索引时可能报错: FATAL:failed to lock /usr/local/sphinx/var/data/test1.sql:Resource temporarily unavailable, will not index.Try--rotate option.   解决方法:该用另一命令生成: ./indexer -c/usr/local/sphinx/etc/sphinx.conf --all -rotate

ERROR:index'test1':NO fields in schema -will not index.   解决:此处很可能时配置文件中的sql出了问题,请留意,特别是sql_attr_xx这类的配置项;

类似 WARNING: attribute 'xxx' not found -IGNORING          解决:找到配置文件中'xxx'排查错误;

类似 FATAL:unknow workers = form value              解决:此处错误一般为参数未给定,检查配置相关参数即可



(关于参数配置可以参考:https://www.2cto.com/kf/201609/545916.html

(天气比较寒冷,本文全手打,如有错误还望谅解并指正。注:版权所有,未经允许不得转载)


上一条:类和对象下一条:123123
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议