sphinx 설정 및 관리

전환 하 다http://blog.chinaunix.net/uid-20639775-id-3277497.html
1. sphinx 설정
1.   sphinx 프로필 구조 소개
Source    1{     
    #     ,                     IP、   、   
    #  sql_query、  sql_query_pre、  sql_query_range             
}

Index     1{
    Source=   1
    #      
}

Indexer{
    #  Indexer      ,      
}

Searchd{  
    #  Searchd           
}

Source 와 Index 는 여러 개 를 설정 할 수 있 습 니 다.
2.   spinx 설정 사례 상세 설명
#       

source search_main

{

    #       
    type                 = mysql

    #      IP      
    sql_host             = localhost

    #          
    sql_user             = root

    #          
    sql_pass             = test123

    #       
    sql_db               = test

    #                SQL  
    sql_query_pre        = SET NAMES utf8
    sql_query_pre        = SET SESSION query_cache_type=OFF

    #    sph_counter      
    sql_query_pre        = CREATE TABLE IF NOT EXISTS sph_counter \

                                      ( counter_id INTEGER PRIMARY KEY NOT NULL,max_doc_id INTEGER NOT NULL)

    #          id   sph_counter  
    sql_query_pre        = REPLACE INTO sph_counter SELECT 1, MAX(searchid) FROM v9_search

    #      SQL,   ID           
    sql_query            = SELECT searchid,typeid,id,adddate,data FROM v9_search where \

                                      searchid<( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) \

                                        and searchid>=$start AND searchid<=$end

    # sql_attr_uint sql_attr_timestamp      api      ,       
    sql_attr_uint        = typeid
    sql_attr_uint        = id
    sql_attr_timestamp   = adddate

    #      
    sql_query_range      = SELECT MIN(searchid),MAX(searchid) FROM v9_search

    #       
    sql_range_step       = 1000

    #           
    sql_ranged_throttle  = 0

    #  CLI   
    sql_query_info       = SELECT * FROM v9_search WHERE searchid=$id

}

#        
source search_main_delta : search_main
{

    sql_query_pre       = set names utf8

    #                    
    #      searchid        searchid       
    sql_query           = SELECT searchid,typeid,id,adddate,data FROM v9_search where  \

                                  searchid>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) \

                                   and searchid>=$start AND searchid<=$end

    sql_query_range     = SELECT MIN(searchid),MAX(searchid) FROM v9_search where \

                                       searchid>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
}

 

#    index_search_main  
index index_search_main
{

    #      
    source            = search_main

    #           
    path         = /usr/local/coreseek/var/data/index_search_main

    #           ,extern         id    
    docinfo           = extern

    #            , 0     
    mlock             = 0

    #         ,   none            
    morphology        = none

    #          
    min_word_len      = 1

    #         ,      utf8         
    charset_type      = zh_cn.utf-8

    #             
    charset_dictpath  = /usr/local/mmseg3/etc

    #          。
    stopwords       = /usr/local/coreseek/var/data/stopwords.txt

    #              HTML  
    html_strip       = 0
}

#      
index index_search_main_delta : index_search_main
{
    source   = search_main_delta
    path    = /usr/local/coreseek/var/data/index_search_main_delta
}

#  indexer    
indexer
{
    #               
    mem_limit        = 512M
}

#  searchd         
searchd
{
    #     IP   
    #listen            = 127.0.0.1
    #listen            = 172.16.88.100:3312
    listen            = 3312
    listen            = /var/run/searchd.sock
    #  log   
    log                = /usr/local/coreseek/var/log/searchd.log

    #    log   
    query_log          = /usr/local/coreseek/var/log/query.log

    #               
    read_timeout       = 5

    #          
    max_children       = 300

    #  searchd  pid   
    pid_file           = /usr/local/coreseek/var/log/searchd.pid

    #                                  
    max_matches        = 100000

    #    seamless  ,  searchd                   
    #              ,       ,       
    seamless_rotate    = 1

    #                  
    preopen_indexes    = 1

    #             .old         
    unlink_old         = 1

    # MVA     ,        
    mva_updates_pool   = 1M

    #        
    max_packet_size    = 32M

    #         
    max_filters        = 256

    #              
    max_filter_values  = 4096
}

2. sphinx 의 관리
1. Sphinx 중국어 단어 라 이브 러 리 생 성 (새 버 전의 중국어 단어 라 이브 러 리 는 / usr / local / mmseg 3 / etc 디 렉 터 리 에 생 성 되 었 습 니 다)
cd /usr/local/mmseg3/etc
/usr/local/mmseg3/bin/mmseg -u thesaurus.txt
mv thesaurus.txt.uni uni.lib

2. Sphinx 중국어 동의어 라 이브 러 리 생 성
#                ,               
/data/software/sphinx/coreseek-3.2.14/mmseg-3.2.14/script/build_thesaurus.py unigram.txt > thesaurus.txt
/usr/local/mmseg3/bin/mmseg -t thesaurus.txt
 thesaurus.lib  uni.lib    

3. 모든 색인 생 성
/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf –all
   searchd        ,      —rotate  :
/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf --all --rotate

4. searchd 데 몬 시작
/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/sphinx.conf

5. 메 인 색인 을 생 성하 고 셸 스 크 립 트 로 작성 하여 crontab 작업 에 추가 하고 매일 새벽 1 시 에 메 인 색인 을 다시 만 들 도록 설정 합 니 다.
/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf --rotate index_search_main

6. 증분 색인 생 성
  shell  ,   crontab  ,    10      

7. 증분 색인 과 메 인 색인 의 통합
셸 스 크 립 트 로 작성 하여 계획 작업 에 추가 하고 15 분 에 한 번 씩 달 립 니 다.
/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf --merge index_search_main index_search_main_delta --rotate

8. search 명령 을 사용 하여 명령 행 에서 색인 을 검색 합 니 다.
/usr/local/coreseek/bin/search --config /usr/local/coreseek/etc/sphinx.conf    

좋은 웹페이지 즐겨찾기