Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aktualisiert Sphinx automatisch den Index, wenn Sie Daten zu Ihrem SQL hinzufügen?

Die Antwort ist nein und Sie müssen Sphinx anweisen, Ihre Datenbank neu zu indizieren.

Es gibt einige Schritte und Anforderungen, die Sie kennen müssen:

  1. Main und Delta sind Voraussetzung
  2. Zuerst müssen Sie Ihren Hauptindex indizieren.
  3. Nach der ersten Ausführung können Sie Delta indizieren, indem Sie es rotieren (um sicherzustellen, dass der Dienst ausgeführt wird und die Daten im Web zu diesem Zeitpunkt verwendet werden können)
  4. Bevor Sie fortfahren, müssen Sie eine Tabelle erstellen, um Ihre "letzten indizierten Zeilen" zu markieren. Die letzte indizierte Zeilen-ID könnte für das nächste Indizierungs-Delta und das Zusammenführen von Delta mit main.
  5. verwendet werden
  6. Sie müssen Ihren Delta-Index mit dem Hauptindex.as in den Sphinx-Dokumenten zusammenführen http://sphinxsearch.com/docs/current.html#index-merging
  7. Starten Sie den Sphinx-Dienst neu.

    TIPPS:Erstellen Sie Ihr eigenes Programm, das den Index mithilfe von C# oder anderen Sprachen ausführen könnte. Sie können auch den Aufgabenplan von Windows ausprobieren.

Hier ist meine 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
}