Linux instala la búsqueda de texto completo de sphinx y el caso de uso de php

Primero instale el entorno lnmp; si no está instalado, consulte

https://blog.csdn.net/hgb24660/article/details/108938963

1. Vaya al sitio web oficial para descargar el paquete.

http://sphinxsearch.com/

Aquí descargo el paquete de software a través de wget, el comando es el siguiente:

wget http://sphinxsearch.com/files/sphinx-2.1.6-release.tar.gz

2. Presurizar el paquete comprimido, el comando es el siguiente:

tar zxvf sphinx-2.1.6-release.tar.gz

Instalación del paquete de código fuente. Si otros archivos de biblioteca de clases relacionados compatibles no están instalados, primero instale otros archivos de paquetes de biblioteca de clases. Si ya instaló archivos de biblioteca de clases relacionados, omita este paso

yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel

3.cd en el directorio para ejecutar

./configure --prefix=/usr/local/sphinx

4. Utilice make && make install para compilar

make && make install

5. Edite el archivo de configuración

cd /usr/local/sphinx/etc/

Copie el archivo de configuración predeterminado y vuelva a crear un archivo de configuración. La versión completa de sphinx.conf.dist tiene una configuración predeterminada. Hay mucho contenido. Aquí elijo copiar la versión mini de sphinx-min.conf.dist

cp /usr/local/sphinx/etc/sphinx-min.conf.dist /usr/local/sphinx/etc/sphinx.conf
vim sphinx.con

Primero, comprenda los siguientes conceptos en una configuración:

-source:数据源,数据是从什么地方来的
-index:索引,当有数据源之后,从数据源处构建索引,索引实际上就是相当于一个字典检索。有了整本字典内容以后,才会有字典检索。
-searchd:提供搜索查询服务,启动 sphinx 服务一般使用 /usr/local/sphinx/bin/searchd -c /usr/local/etc/sphinx.conf
-indexer:构建索引,当需要构建索引的时候就调用indexer这个命令:/usr/local/bin/indexer -c /usr/local/etc/sphinx.conf --all --rotate
-attr:属性,属性是存在索引中的,它不进行全文索引,但是可以进行过滤和排序

Base de datos de configuración
Inserte la descripción de la imagen aquí

6. Importe example.sql en el directorio / usr / local / sphinx / etc / a la base de datos (los datos de prueba se usan para la búsqueda de texto completo, se pueden usar otras tablas, pero se requieren datos)

进入mysql
mysql -u xxx -p
show databases;		//查看数据库
create database test;	//创建数据库
source /usr/local/sphinx/etc/example.sql  //导入sql文件

Inserte la descripción de la imagen aquí

Salga de mysql
6.5 Modifique el socket del archivo de configuración mysql.ini
para mover mysql.sock bajo / tmp a / var / lib / mysql /
Inserte la descripción de la imagen aquí

mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
cd /tmp/
mv mysql.sock /var/lib/mysql/

Y modifica el socket, reinicia el servicio MySQL
Inserte la descripción de la imagen aquí

8. Inicie el servicio Sphinx.

/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf

Inserte la descripción de la imagen aquí

7. Cree un archivo de índice Sphinx

/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf --all --rotate
如果创建的索引文件比较多而又不需要全部重新生成索引,可以单独生成
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf test1
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf testrt

Si
ADVERTENCIA: no se pudo abrir el archivo pid '/ usr / local / sphinx / var / log / searchd.pid'.
ADVERTENCIA: los índices NO rotaron.
O
FATAL: detener: archivo pid '/ usr / local / sphinx / var / log / searchd .pid 'no existe o no es una
solución legible : el
servicio de inicio sphinx está en funcionamiento
Inserte la descripción de la imagen aquí
, utilice el servicio de inicio sphinx y luego ejecútelo de nuevo

Para dejar de usar el servicio:

/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf --stop

La instalación de sphinx en Linux está completa.

php usa el caso de la esfinge

1. PHP instala el módulo de extensión sphinx

  • Requiere soporte libsphinxclient

El archivo libsphinxclient existe en la carpeta api del archivo fuente descomprimido

cd sphinx-2.1.6-release/api/libsphinxclient/
./configure -prefix=/usr/local/sphinx/
make && make install

Descargue la extensión sphinx, enlace de descarga: https://pecl.php.net/package/sphinx
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Descomprima e ingrese al directorio para ejecutar:

phpize
./configure --with-php-config=/www/server/php/56/bin/php-config --with-sphinx=/usr/local/sphinx/
make && make install

Nota:

--With-php-config = / www / server / php / 56 / bin / php-config: es el directorio donde se instala el archivo de entorno php.
Finalmente, aparecerá la extensión sphinx:
Inserte la descripción de la imagen aquí
luego configure el archivo php.ini, cargue la extensión sphinx
en php.ini Agregar a

[sphinx]
extension=/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/sphinx.so

Inserte la descripción de la imagen aquí

Reinicie el servicio, verifique phpinfo y verifique si sphinx se instaló correctamente
Inserte la descripción de la imagen aquí

Esfinge de prueba de código 2.php

<?php
    $sphinx = new SphinxClient;
    $sphinx->setServer("127.0.0.1", 9312);
    $sphinx->setMatchMode(SPH_MATCH_ANY);   //匹配模式 ANY为关键词自动拆词,ALL为不拆词匹配(完全匹配)
    // $sphinx->SetArrayResult ( true );    //返回的结果集为数组
    $keyword = 'is';
    // $result = $sphinx->query($keyword,"*");     //星号为所有索引源
    $result = $sphinx->query($keyword,"test1");     
    $err = $sphinx->GetLastError();                 //错误信息
    if(!empty($err)) {
    
    
        print_r($result);
    }
    //使用mysql
    $ids = implode(',',array_keys($result['matches']));
    $conn = mysqli_connect('127.0.0.1','root','root');
    mysqli_query($conn,'set names utf8');
    mysqli_select_db($conn,'test');
    
    $sql = "select * from documents where id in (".$ids.")";
    
    $rst = mysqli_query($conn,$sql);
    
    //给匹配关键字添加样式
    $opts = array(
        'before_match'=>'<font style="font-weight:bold;color:#f00;">',
        'after_match'=>'</font>'
    );
    echo '<pre>';
    while($row = mysqli_fetch_assoc($rst)){
    
    
        $row2 = $sphinx->buildExcerpts($row,'test1',$keyword,$opts);//test1 配置文件中的主数据源索引
        print_r($row2);  
    }
    echo '</pre>';

resultado:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/hgb24660/article/details/108941506
Recomendado
Clasificación