sql >> Databasteknik >  >> RDS >> Mysql

Är Sphinx automatisk uppdatering index när du lägger till data i din SQL?

Svaret är nej och du måste be Sphinx att indexera om din db.

Det finns några steg och krav som du behöver känna till:

  1. Main och delta är ett krav
  2. Första körningen måste du indexera ditt huvudindex.
  3. Efter den första körningen kan du indexera delta genom att rotera det (för att säkerställa att tjänsten körs och att data på webben kan användas samtidigt)
  4. Innan du går vidare måste du skapa en tabell för att markera dina "senast indexerade rader". Det senast indexerade rad-ID:t kan användas för nästa indexeringsdelta och slå samman delta till main.
  5. Du måste slå samman ditt deltaindex med huvudindexet.as inuti sfinxdokumenten http://sphinxsearch.com/docs/current.html#index-merging
  6. Starta om sfinxtjänsten.

    TIPS:Skapa ditt eget program som kan köra indexet genom att använda C# eller andra språk. Du kan prova uppgiftsschemat för Windows också.

Här är min konf:

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. MySql-variabler och php

  2. Hur kan jag dra en lista med ID:n från en SQL-tabell som en kommaseparerad värdesträng?

  3. hur ändrar man en befintlig kontrollbegränsning?

  4. Hitta specifikt värde i kommalista i databasen