Mysql
 sql >> Base de données >  >> RDS >> Mysql

La mise à jour automatique de Sphinx est-elle indexée lorsque vous ajoutez des données à votre SQL ?

La réponse est non et vous devez dire à sphinx de réindexer votre base de données.

Vous devez connaître certaines étapes et exigences :

  1. Main et delta sont obligatoires
  2. Première exécution, vous devez indexer votre index principal.
  3. Après la première exécution, vous pouvez indexer le delta en le faisant pivoter (pour vous assurer que le service est en cours d'exécution et que les données sur le Web peuvent être utilisées à ce moment-là)
  4. Avant d'aller plus loin, vous devez créer un tableau pour marquer vos "dernières lignes indexées". Le dernier ID de lignes indexées pourrait être utilisé pour le delta d'indexation suivant et le delta de fusion dans main.
  5. Vous devez fusionner votre index delta avec l'index principal.as à l'intérieur des documents sphinx http://sphinxsearch.com/docs/current.html#index-merging
  6. Redémarrez le service sphinx.

    CONSEILS :Créez votre propre programme qui pourrait exécuter l'index en utilisant C# ou d'autres langages. Vous pouvez également essayer le calendrier des tâches de Windows.

Voici ma 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
}