sql >> Database >  >> RDS >> Mysql

Is de automatische update van Sphinx index wanneer u gegevens aan uw SQL toevoegt?

Het antwoord is nee en je moet sphinx vertellen om je db opnieuw te indexeren.

Er zijn enkele stappen en vereisten die u moet kennen:

  1. Hoofd en delta zijn vereiste
  2. Eerste keer moet je je hoofdindex indexeren.
  3. Na de eerste run kunt u delta indexeren door deze te roteren (om er zeker van te zijn dat de service actief is en dat de gegevens op internet op dat moment kunnen worden gebruikt)
  4. Voordat u verder gaat, moet u een tabel maken om uw "laatst geïndexeerde rijen" te markeren. De ID van de laatst geïndexeerde rijen kan worden gebruikt voor de volgende indexeringsdelta en voor het samenvoegen van delta in main.
  5. U moet uw delta-index samenvoegen met de hoofdindex.as in de sphinx-documenten http://sphinxsearch.com/docs/current.html#index-merging
  6. Start de sfinx-service opnieuw.

    TIPS:Maak je eigen programma dat de index kan uitvoeren met behulp van C# of andere talen. U kunt het taakschema van Windows ook proberen.

Hier is mijn 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
}


  1. Tool voor het scripten van tabelgegevens

  2. Verouderde functies om uit uw gereedschapskist te halen - Deel 2

  3. mysqld_safe Directory '/var/run/mysqld' voor UNIX-socketbestand bestaat niet

  4. JSON_REMOVE() – Gegevens verwijderen uit een JSON-document in MySQL