Red de conocimiento informático - Material del sitio web - Cómo utilizar la búsqueda esfinge en Yii 2.0

Cómo utilizar la búsqueda esfinge en Yii 2.0

Cómo llamar a Sphinx

Como se configuró anteriormente, el nodo 5 indexará la base de datos y utilizará la búsqueda propia de Sphinx (en el directorio bin/release. Puede buscar a través de la línea de comando:

). (buscar CGArt)

En Windows:

buscar -c d:/sphinx/sphinx.conf CGArt

En Linux:

cd /usr/local/sphinx

./bin/search -c sphinx.conf CGArt

Después de ejecutar, el sistema mostrará una serie de información:

....

....

palabras:

1. 'cgart': 36 documentos, 189 clics

Esto. Significa que hay 36 registros en la biblioteca que cumplen con los requisitos y CGArt aparece 189 veces. Las aplicaciones que quieran llamar a Sphinx pueden hacerlo de dos maneras:

Una es a través de la interfaz API oficial proporcionada por Sphinx (esta interfaz está disponible en Python, Java y Php)

La El segundo es instalar SphinxSE (consulte la Sección 1.2 para obtener más detalles), luego crear una tabla de tipo sphinxSE intermedio y luego ejecutar declaraciones SQL específicas.

Llame a Sphinx a través de la API oficial (tomando PHP como ejemplo)

Hay un directorio API en el directorio de instalación de Sphinx, que contiene tres archivos PHP: test.php, test2. php y sphinxapi.php. test.php es un archivo de consulta de muestra ejecutado en la línea de comando y test2.php es un archivo de muestra que genera un resumen.

Ejecute test.php en la línea de comando (no hay un directorio API en Linux, necesita copiar el directorio api en el paquete fuente a /usr/local/sphinx)

En Windows:

D:\sphinx\bin\release>c:\php5.2\php.exe -c c:\php5.2\php.ini ...\...\api\ test.php -i cgfinal CGartLinux (php está en el directorio /usr/local/php, sphinx.conf está en el directorio /usr/local/sphinx):

cd /usr/local/sphinx

/usr/ local/php/bin/php api/test.php -i cgfinal La interfaz de consulta API de CGArtSphinx tiene estos elementos principales (de hecho, si la compara con sphinxapi.php, será clear):

/usr/local/php/bin/php api/test.php -i cgfinalphp):

//Crear objeto de interfaz de cliente Sphinx

$ cl = new SphinxClient ();

//Establece el nombre del host y el puerto para conectarte a Sphinx

$cl->SetServer('localhost',3312);

Creando un objeto de interfaz de cliente Sphinx.

SetMatchMode(SPH_MATCH_ALL);

//Establecer condiciones de filtro $attribute es el nombre del atributo, que es equivalente al nombre del campo (SPH_MATCH_EXTENDED), $value es el valor y $exclude es un valor booleano.

Cuando es verdadero, equivale a $atributo!=$valor, y el valor predeterminado es falso

$cl->SetFilter($atributo, $valores, $ excluir );

//Establecer el método de agrupación

// Según el método de agrupación, el conjunto de registros coincidentes se dividirá en diferentes grupos. Cada grupo registrará el número de registros coincidentes. en el grupo y calcule el número de registros coincidentes de acuerdo con la clasificación actual por el mejor registro coincidente en el grupo de registros.

// El conjunto de resultados final contiene el mejor registro coincidente para cada grupo, el número de registros coincidentes y el valor de la función de agrupación

// La agrupación del conjunto de resultados se puede realizar utilizando cualquier declaración de clasificación, incluidas las propiedades de los documentos, así como las siguientes propiedades internas de sphinx

//@id - ID del documento coincidente

//@weight, @rank, @relevance - ID del documento coincidente

//@weight, @rank, @relevance - peso coincidente

//@group - agrupar por valor de función

// @count - número de registros en el grupo

p>

//La clasificación predeterminada de $groupsort es @group desc, que es el recíproco del valor de la función de agrupación

$cl- >SetGroupBy($attribute, $func, $groupsort);

p>

//Establece el contenido de ordenar por. El primer parámetro es el nombre del método de clasificación y su valor es

// sph_sort_relevance, sph_sort_attr_desc sph_sort_attr_desc, sph_sort_attr_asc, sph_sort_time_segments, sph_sort_extended

// el valor de $ sortby es e.g al e.gh. " ,$sortby);

//Establece el atributo count-distinct para consultas agrupadas, $distinct es una cadena

$cl->SetGroupDistinct($distinct);

$cl->SetGroupDistinct($distinct);

//Equivalente al límite de mysql $offset,$limit

$cl->SetLimits($start,$limit)

$q es la palabra clave de consulta, $index es el nombre del índice, cuando es igual a * Consultar todos los índices de la tabla