Red de conocimiento informático - Material del sitio web - Cómo configurar Sphinx como servidor de caché

Cómo configurar Sphinx como servidor de caché

Primero, comprendamos los archivos utilizados por Sphinx. Los archivos utilizados por Sphinx incluyen .sph, .spa, .spi, .spd, .spp, .spm y .spl.

sph: archivo de encabezado, utilizado para guardar el archivo de configuración del sistema.

spi: almacene el WordId y el puntero de información del documento correspondiente al WordId en el archivo spd. Cuando se inicia el programa de recuperación, el archivo spi se carga completamente en la memoria.

Los archivos spi se fragmentan, se clasifican dentro de fragmentos y en fragmentos. El propósito de la fragmentación debe ser recuperar rápidamente el WordId, debido a que el WordId en spi está comprimido de longitud variable, el índice debe bifurcarse posicionalmente en el nivel de bloque primero y luego recuperarse durante la descompresión rápida.

spa: almacena archivos DocInfo. Este archivo se cargará en la memoria cuando se inicie el programa de recuperación. sphinx puede especificar el método de almacenamiento de DocInfo:

en línea: almacenado en archivos spd.

Externo: Se almacenan por separado, se generarán archivos spa.

spd: lista de archivos.

spp: lista de posiciones de palabras clave.

spm: En DocInfo, existe un atributo especial llamado MVA (Multiple Value Attribute). Sphinx tiene un manejo especial de esta propiedad y necesita almacenarla en el archivo spm. Cuando se inicia el programa de recuperación, el archivo se carga en la memoria. Esta propiedad almacena su desplazamiento de bytes en el archivo en la ubicación DocInfo correspondiente.

spk: killlist

spl: index lock

Como puede ver en la introducción, los atributos del documento almacenados por Sphinx no se almacenan en versiones anteriores a 0.98. ¿Podemos utilizar estos datos como caché para obtener información del documento basada en DocID?

El efecto deseado se puede lograr agregando el comando SEARCHD_COMMAND_DOCINFO al servicio de búsqueda de hacks y la función GetDocinfo a la API del cliente.

código de muestra php:

require 'sphinxapi.php';

$cl = new SphinxClient ();

$cl- > SetServer();

$res = $cl->. GetDocinfo(1, 'cantante');

print_r($res);

$ cl->.