sql >> データベース >  >> RDS >> Mysql

SQLにデータを追加するとき、Sphinxの自動更新はインデックスになりますか?

    答えはノーであり、dbのインデックスを再作成するようにsphinxに指示する必要があります。

    知っておく必要のあるいくつかの手順と要件があります:

    1. メインとデルタは必須です
    2. 最初の実行では、メインインデックスにインデックスを付ける必要があります。
    3. 最初の実行後、デルタをローテーションしてインデックスを作成できます(サービスが実行されており、その時点でWeb上のデータを使用できることを確認するため)
    4. 次の手順に進む前に、「最後にインデックス付けされた行」をマークするテーブルを作成する必要があります。最後にインデックス付けされた行IDは、次のインデックス付けデルタおよびメインへのデルタのマージに使用できます。
    5. デルタインデックスをメインインデックスにマージする必要があります。スフィンクスドキュメント内のように http://sphinxsearch.com/docs/current.html#index-merging
    6. sphinxサービスを再起動します。

      ヒント:C#または他の言語を使用してインデックスを実行できる独自のプログラムを作成します。 Windowsのタスクスケジュールも試すことができます。

    これが私の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. mysql自動インクリメントエラー

    2. whereステートメントでmysqlを一括更新します

    3. 名前とマネージャー名を取得する方法

    4. MariaDBでのRPAD()のしくみ