centos7安装sphinx及使用

注:安装sphinx2.2.11之前我已经安装好了MySQL

1、下载sphinx安装包并安装sphinx

#下载
wget http://sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz
#解压
tar -zxvf sphinx-2.2.11-release
#进入sphinx-2.2.11-release
cd sphinx-2.2.11-release
#编译安装
./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql
#--prefix安装路径 --with-mysql是mysql安装路径
make && make install
#执行完步骤1说明已经安装成功

2、配置sphinx

#进入sphinx安装目录
cd /usr/local/sphinx
#打开编辑配置文件
vi etc/sphinx.conf.dist
#配置项如下:

sphinx.png

接下来建好数据库,填充数据即可

3、生成索引及启动

cd /usr/local/sphinx/bin
#生成索引
./indexer --all
#此处可能会提示找不到libmysqlclient.so.20,解决方法就是创建一个软链接
#ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64
#启动
./searchd
#不报错就说明启动成功

3、命令行测试

#进入步骤1下载的sphinx包里面
cd /usr/local/src/sphinx-2.2.11-release/api
#搜索测试
php test.php 环球易购
#搜索结果如下:

image.png

4、项目中测试

首先创建一个项目并配置nginx、设置域名等(正常的部署PHP项目)

cd /opt
mkdir sphinx
chown -R www:www sphinx
#把下载解压包中的api和测试文件放在该项目中
cd /usr/local/src/sphinx-2.2.11-release/api
cp /usr/local/src/sphinx-2.2.11-release/api/test.php /opt/sphinx/
cp /usr/local/src/sphinx-2.2.11-release/api/sphinxapi.php /opt/sphinx/
#创建页面
vi index.html
#先写如下内容
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'/>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to sphinx!</h1>
<form action="./doaction.php" method="POST">
<input type="text" name="keywords" value=""/>
<input type="submit" value="sphinx搜索"/>
</form>
</body>
</html>

#创建doaction.php文件
vi doaction.php
#编辑如下内容:
<?php
#引入API
require ( "sphinxapi.php" );
#实例化
$cl = new SphinxClient ();
#接收参数
$q = $_POST['keywords'];
$host = "localhost";
$port = 9312;
#索引
$index = "good";
$cl->SetServer ( $host, $port );
$cl->SetConnectTimeout ( 1 );
$cl->SetArrayResult ( true );
#搜索并返回结果
$res = $cl->Query ( $q, $index );

echo "<pre>";
var_dump($res);
echo "</pre>";

?>

结果如下:

image.png