PHP Tp5安装使用Sphinx 搜索引擎

PHP 同时被 2 个专栏收录
40 篇文章 0 订阅
13 篇文章 0 订阅

说明:

Sphinx 是一个搜索引擎,独立的软件,不是PHP或者mysql的拓展,只是它的数据来源可以从mysql 里读取;
这里是配合mysql使用,mysql 安装不在这里介绍

流程

一:下载Sphinx;
直接到官网下载即可,下载对应操作系统的(这里是Linux)后直接解压,不需要编译安装(这里用的版本是 Sphinx 3.3.1 released),解压后目录如下
在这里插入图片描述
二:配置Sphinx
配置文件在sphinx-3.3.1/etc
下面简单介绍配置,以及注意事项

#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source src1
{
    type			= mysql

	sql_host		= localhost
	sql_user		= test
	sql_pass		= 1234560
	sql_db			= test
	sql_port		= 3306	# optional, default is 3306
	sql_sock      = /tmp/mysql.sock #这个要跟数据库配置保持一致
	sql_query		= \
		SELECT id, name,add_time \
		FROM sent_test_u

}


index test_u
{
	source			= src1
	path			= /var/data/test_u #这个要提前创建文件夹,不然报错
	ngram_chars = U+3000..U+2FA1F #为了支持中文
	ngram_len = 1 #sphinx 中文支持很差,这样设置可以支持中文,但会将中文分为单个字搜索
}


indexer
{
    mem_limit       = 200M
}


searchd
{
    listen          = 9312
    listen          = 9306:mysql41
    log             = /var/log/searchd.log
    query_log       = /var/log/query.log
    read_timeout    = 5
    max_children    = 30
    pid_file        = /var/log/searchd.pid
    seamless_rotate = 1
    preopen_indexes = 1
    unlink_old      = 1
    workers         = threads # for RT to work
    binlog_path     = /var/data
}

三:创建索引
Sphinx 使用前必须先创建好索引才能使用,后面数据库更新了数据,需要定时更新或者创建索引,不然新数据是搜索不出来的
命令如下

#创建索引
/usr/local/sphinx-3.3.1/bin/indexer -c /usr/local/sphinx-3.3.1/etc/sphinx-min.conf  --all

四:启动服务

/usr/local/sphinx-3.3.1/bin/searchd -c /usr/local/sphinx-3.3.1/etc/sphinx-min.conf
#结束服务
killall searchd
#不删除索引生成新的索引(更新时使用)
/usr/local/sphinx-3.3.1/bin/indexer -c /usr/local/sphinx-3.3.1/etc/sphinx-min.conf  --rotate  --all

如果启动报错
bind() failed on 0.0.0.0, retrying…
使用命令查看所有searchd进程,并用 kill -9 杀死所有searchd进程
ps aux|grep searchd

五:PHP 使用
php 使用Sphinx 不需要安装拓展,Sphinx里面已经写好一个PHP 文件(sphinx-3.3.1/api/sphinxapi.php),直接将此文件复制到PHP 项目下,使用sphinx时直接require 进来就可以;
下面是TP5 Model 类中的简单封装

<?php
/**
 * Created by PhpStorm.
 * User: 0550
 */
namespace app\common\model;

class Sphinx{
    public static $SphinxClient;
    public function __construct()
    {
        require_once ROOT_PATH."core/extend/sphinxapi.php"; //引入拓展文件
        if (empty(self::$SphinxClient)){
            self::$SphinxClient=new \SphinxClient();
            self::$SphinxClient->SetServer('localhost',9312);
            self::$SphinxClient->SetArrayResult ( true );
        }

    }

    public function squery($key,$index){
        return self::$SphinxClient->Query($key,$index);
    }
}

调用代码

<?php
namespace app\Api\controller;
use app\common\controller\Api;
use app\common\model\BaiDuFace;
class Test extends Api{
    public function test1(){
       $d= model("Sphinx")->squery("test",'test_u');
       echo json_encode($d);
    }
}
  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值