sql >> Base de Datos >  >> RDS >> Mysql

¿La actualización automática de Sphinx es un índice cuando agrega datos a su SQL?

La respuesta es no y necesita decirle a Sphinx que vuelva a indexar su base de datos.

Hay algunos pasos y requisitos que debe conocer:

  1. Principal y delta son requisitos
  2. Primera ejecución, debe indexar su índice principal.
  3. Después de la primera ejecución, puede indexar delta girándolo (para asegurarse de que el servicio se está ejecutando y los datos en la web se pueden usar en ese momento)
  4. Antes de dar un paso más, debe crear una tabla para marcar sus "últimas filas indexadas". El ID de las últimas filas indexadas podría usarse para la próxima indexación delta y la fusión delta en principal.
  5. Debe combinar su índice delta con el índice principal, como dentro de los documentos de Sphinx http://sphinxsearch.com/docs/current.html#index-merging
  6. Reinicie el servicio Sphinx.

    CONSEJOS:Cree su propio programa que pueda ejecutar el índice usando C# u otros lenguajes. También puede probar el programa de tareas de Windows.

Aquí está mi conf:

source Main
{
type            = mysql

sql_host        = localhost
sql_user        = root
sql_pass        = password
sql_db          = table1
sql_port        = 3306  # optional, default is 3306
sql_query_pre = REPLACE INTO table1.sph_counter SELECT 1, MAX(PageID) FROM table1.pages;
sql_query       = \
    SELECT  pd.`PageID`, pd.Status from table1.pages pd
    WHERE pd.PageID>=$start AND pd.PageID<=$end \
    GROUP BY pd.`PageID`

sql_attr_uint       = Status

sql_query_info      = SELECT * FROM table1.`pages` pd WHERE pd.`PageID`=$id
sql_query_range     = SELECT MIN(PageID),MAX(PageID)\
              FROM tabl1.`pages`
sql_range_step      = 1000000
}


source Delta : Main
{
sql_query_pre = SET NAMES utf8

sql_query = \
    SELECT  PageID, Status from pages \
    WHERE PageID>=$start AND PageID<=$end 

sql_attr_uint       = Status

sql_query_info      = SELECT * FROM table1.`pages` pd WHERE pd.`PageID`=$id
sql_query_range     = SELECT (SELECT MaxDoc FROM table1.sph_counter WHERE ID = 1) MinDoc,MAX(PageID) FROM table1.`pages`;
sql_range_step      = 1000000
}


index Main
{
source          = Main
path            = C:/sphinx/data/Main
docinfo         = extern
charset_type        = utf-8
}


index Delta : Main
{
    source = Delta
path = C:/sphinx/data/Delta
charset_type = utf-8
}