SphinxSearch 설치시 여러게시판을 등록하려면 어떻게 하나요?

SphinxSearch 설치시 여러게시판을 등록하려면 어떻게 하나요?

QA

SphinxSearch 설치시 여러게시판을 등록하려면 어떻게 하나요?

본문

https://sir.kr/g5_tip/6594

 

위에 팁으로 SphinxSearch 설치를 했습니다.

 

다만 하나의 게시판만 적용을 하였는데요

 

여러게시판 예를 들어 게시판 테이블이 ww1,ww2,ww3 ~ ww20

 

이렇게 20개의 게시판이 있다면 다 적용시키려면 어느 소스를 변경해야하나요?

 

 

 

 

 

이 질문에 댓글 쓰기 :

답변 2

똑같이 다음 3가지 모두 다 수정(추가)을 해줘야 합니다.

제일먼저 sphinx.conf 파일 열어서 데이터를 색인할 ww1,ww2,ww3 ~ ww20 필요한 만큼 게시판 데이터베이스 정보 및 쿼리 설정을 추가하고, 다음 인텍스 수정을 해주면되지않을까합니다.

 

1. indexer 

  : 색인을 수행하는 명령어입니다.

2. searchd

  : 검색과 검색결과를 전송해주는 데몬입니다.

3. sphinx.conf

  : 스핑크스 설정파일입니다. /etc/sphinx/sphinx.conf 에 위치합니다.

/etc/sphinx/sphinx.conf 이 파일 하나만 수정해주면 되지 않나요?

1. indexer

  : 색인을 수행하는 명령어입니다.

2. searchd

  : 검색과 검색결과를 전송해주는 데몬입니다.

이 두가지는 컴프파일을 수정한 후에 한번씩 실행해주면 되는것 아니었나요?



/etc/sphinx/sphinx.conf 파일입니다. 여기서 수정을 어떻게 하는지 알고 싶습니다.

source g5_write_test
{
        type                    = mysql
        sql_host                = 127.0.0.1
        sql_user                = root
        sql_pass                = root
        sql_db                  = board
        sql_port                = 3306  # optional, default is 3306
        #sql_sock                = /tmp/mysql.sock
        sql_query = SELECT wr_id id, 'test' bo_table, wr_id, wr_parent, ca_name, wr_subject, wr_content, mb_id, wr_name, wr_ip, wr_is_comment, UNIX_TIMESTAMP(wr_datetime) AS wr_datetime FROM g5_write_test where wr_is_comment=0
        sql_attr_string        = ca_name
        sql_field_string        = wr_subject
        sql_field_string        = wr_content
        sql_field_string        = bo_table
        sql_attr_uint          = wr_id
        sql_attr_uint          = wr_parent
        sql_attr_uint          = wr_is_comment
        sql_attr_timestamp      = wr_datetime
}

index board
{
        source                  = g5_write_test
        path                    = /var/lib/sphinx/board
        docinfo                = extern
        #morphology            = stem_en
        charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
        ngram_len = 1
        min_word_len = 1
        #enable_star  = 0
        #min_prefix_len = 3
        min_infix_len = 1
        min_prefix_len = 0
        ngram_chars =  U+4E00..U+9FBB, U+3400..U+4DB5, U+20000..U+2A6D6, U+FA0E, U+FA0F, U+FA11, U+FA13, U+FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27, U+FA28, U+FA29, U+3105..U+312C, U+31A0..U+31B7, U+3041, U+3043, U+3045, U+3047, U+3049, U+304B, U+304D, U+304F, U+3051, U+3053, U+3055, U+3057, U+3059, U+305B, U+305D, U+305F, U+3061, U+3063, U+3066, U+3068, U+306A..U+306F, U+3072, U+3075, U+3078, U+307B, U+307E..U+3083, U+3085, U+3087, U+3089..U+308E, U+3090..U+3093, U+30A1, U+30A3, U+30A5, U+30A7, U+30A9, U+30AD, U+30AF, U+30B3, U+30B5, U+30BB, U+30BD, U+30BF, U+30C1, U+30C3, U+30C4, U+30C6, U+30CA, U+30CB, U+30CD, U+30CE, U+30DE, U+30DF, U+30E1, U+30E2, U+30E3, U+30E5, U+30E7, U+30EE, U+30F0..U+30F3, U+30F5, U+30F6, U+31F0, U+31F1, U+31F2, U+31F3, U+31F4, U+31F5, U+31F6, U+31F7, U+31F8, U+31F9, U+31FA, U+31FB, U+31FC, U+31FD, U+31FE, U+31FF, U+AC00..U+D7A3, U+1100..U+1159, U+1161..U+11A2, U+11A8..U+11F9, U+A000..U+A48C, U+A492..U+A4C6
}
index testrt
{
        type                    = rt
        rt_mem_limit            = 128M
        path                    = /var/lib/sphinx/testrt
        rt_field                = title
        rt_field                = content
        rt_attr_uint            = gid
}

indexer
{
        mem_limit              = 128M
}

searchd
{
        listen                  = 9312
        listen                  = 9306:mysql41
        log                    = /var/log/sphinx/searchd.log
        query_log              = /var/log/sphinx/query.log
        read_timeout            = 5
        max_children            = 30
        pid_file                = /var/run/sphinx/searchd.pid
        seamless_rotate        = 1
        preopen_indexes        = 1
        unlink_old              = 1
        workers                = threads # for RT to work
        binlog_path            = /var/lib/sphinx/
}

네 실제 source g5_write_test 와 데이타베이스 이름이 board 라면 그대로 사용하시면됩니다.

만약 다른 게시판에 대한 데이터도 검색하려면게시판에 대한 데이터 쿼리를 예를 들어 다음과 같이 각각 추가해 주셔야 합니다.

source g5_write_test_1
{
    type                    = mysql
    sql_host                = 127.0.0.1
    sql_user                = root
    sql_pass                = root
    sql_db                  = 실제 추가 데이타베이스 이름
    sql_port                = 3306
    sql_query              = SELECT wr_id id, 'test_1' bo_table, wr_id, wr_parent, ca_name, wr_subject, wr_content, mb_id, wr_name, wr_ip, wr_is_comment, UNIX_TIMESTAMP(wr_datetime) AS wr_datetime FROM g5_write_test_1 where wr_is_comment=0
    sql_attr_string        = ca_name
    sql_field_string        = wr_subject
    sql_field_string        = wr_content
    sql_field_string        = bo_table
    sql_attr_uint          = wr_id
    sql_attr_uint          = wr_parent
    sql_attr_uint          = wr_is_comment
    sql_attr_timestamp      = wr_datetime
}

그리고 inxdex 식별자를 추가 해주면 되겠습니다.

밑에 내용은 더 있지만 실제 이렇게 하면 오류가 나는데요

하나씩 다 추가해주는건 아닌듯하네요

source g5_write_ww1
{
        type                    = mysql
        sql_host                = 127.0.0.1
        sql_user                = root
        sql_pass                = aaw
        sql_db                  = gg
        sql_port                = 3306  # optional, default is 3306
        #sql_sock                = /tmp/mysql.sock
        sql_query = SELECT wr_id id, 'ww1' bo_table, wr_id, wr_parent, ca_name, wr_subject, wr_content, mb_id, wr_name, wr_ip, wr_is_comment, UNIX_TIMESTAMP(wr_datetime) AS wr_datetime FROM g5_write_ww1 where wr_is_comment=0
        sql_attr_string        = ca_name
        sql_field_string        = wr_subject
        sql_field_string        = wr_content
        sql_field_string        = bo_table
        sql_attr_uint          = wr_id
        sql_attr_uint          = wr_parent
        sql_attr_uint          = wr_is_comment
        sql_attr_timestamp      = wr_datetime
}

index gg
{
        source                  = g5_write_ww1
        path                    = /var/lib/sphinx/gg
        docinfo                = extern
        #morphology            = stem_en
        charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
        ngram_len = 1
        min_word_len = 1
        #enable_star  = 0
        #min_prefix_len = 3
        min_infix_len = 1
        min_prefix_len = 0
        ngram_chars =  U+4E00..U+9FBB, U+3400..U+4DB5, U+20000..U+2A6D6, U+FA0E, U+FA0F, U+FA11, U+FA13, U+FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27, U+FA28, U+FA29, U+3105..U+312C, U+31A0..U+31B7, U+3041, U+3043, U+3045, U+3047, U+3049, U+304B, U+304D, U+304F, U+3051, U+3053, U+3055, U+3057, U+3059, U+305B, U+305D, U+305F, U+3061, U+3063, U+3066, U+3068, U+306A..U+306F, U+3072, U+3075, U+3078, U+307B, U+307E..U+3083, U+3085, U+3087, U+3089..U+308E, U+3090..U+3093, U+30A1, U+30A3, U+30A5, U+30A7, U+30A9, U+30AD, U+30AF, U+30B3, U+30B5, U+30BB, U+30BD, U+30BF, U+30C1, U+30C3, U+30C4, U+30C6, U+30CA, U+30CB, U+30CD, U+30CE, U+30DE, U+30DF, U+30E1, U+30E2, U+30E3, U+30E5, U+30E7, U+30EE, U+30F0..U+30F3, U+30F5, U+30F6, U+31F0, U+31F1, U+31F2, U+31F3, U+31F4, U+31F5, U+31F6, U+31F7, U+31F8, U+31F9, U+31FA, U+31FB, U+31FC, U+31FD, U+31FE, U+31FF, U+AC00..U+D7A3, U+1100..U+1159, U+1161..U+11A2, U+11A8..U+11F9, U+A000..U+A48C, U+A492..U+A4C6
}
index ww1rt
{
        type                    = rt
        rt_mem_limit            = 128M
        path                    = /var/lib/sphinx/ww1rt
        rt_field                = title
        rt_field                = content
        rt_attr_uint            = gid
}

indexer
{
        mem_limit              = 128M
}

searchd
{
        listen                  = 9312
        listen                  = 9306:mysql41
        log                    = /var/log/sphinx/searchd.log
        query_log              = /var/log/sphinx/query.log
        read_timeout            = 5
        max_children            = 30
        pid_file                = /var/run/sphinx/searchd.pid
        seamless_rotate        = 1
        preopen_indexes        = 1
        unlink_old              = 1
        workers                = threads # for RT to work
        binlog_path            = /var/lib/sphinx/
}

source g5_write_ww2
{
        type                    = mysql
        sql_host                = 127.0.0.1
        sql_user                = root
        sql_pass                = aaw
        sql_db                  = gg
        sql_port                = 3306  # optional, default is 3306
        #sql_sock                = /tmp/mysql.sock
        sql_query = SELECT wr_id id, 'ww2' bo_table, wr_id, wr_parent, ca_name, wr_subject, wr_content, mb_id, wr_name, wr_ip, wr_is_comment, UNIX_TIMESTAMP(wr_datetime) AS wr_datetime FROM g5_write_ww2 where wr_is_comment=0
        sql_attr_string        = ca_name
        sql_field_string        = wr_subject
        sql_field_string        = wr_content
        sql_field_string        = bo_table
        sql_attr_uint          = wr_id
        sql_attr_uint          = wr_parent
        sql_attr_uint          = wr_is_comment
        sql_attr_timestamp      = wr_datetime
}

index gg
{
        source                  = g5_write_ww2
        path                    = /var/lib/sphinx/gg
        docinfo                = extern
        #morphology            = stem_en
        charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
        ngram_len = 1
        min_word_len = 1
        #enable_star  = 0
        #min_prefix_len = 3
        min_infix_len = 1
        min_prefix_len = 0

sql_db                  =

이부분은 실제 제 db를 넣는것이 아닌가요?

그리고

indexer
{
        mem_limit              = 128M
}

searchd
{
        listen                  = 9312
        listen                  = 9306:mysql41
        log                    = /var/log/sphinx/searchd.log
        query_log              = /var/log/sphinx/query.log
        read_timeout            = 5
        max_children            = 30
        pid_file                = /var/run/sphinx/searchd.pid
        seamless_rotate        = 1
        preopen_indexes        = 1
        unlink_old              = 1
        workers                = threads # for RT to work
        binlog_path            = /var/lib/sphinx/
}



이부분은 마지막에 한번만 넣으면 되는건가요?

그렇다면 캐싱은 필수로 하시구요
Sphinx 검색 서버의 하드웨어 리소스를 확인 해보세요.
메모리, CPU, 디스크 속도등등

일단 sphinx.conf 설정 부분 에서 메모리 할당 크기를 조금 늘려보시구요
indexer
{
    mem_limit = 256M
}

설정변경후에는 Sphinx를 다시 시작 필히 하셔야합니다.


수고 하셨습니다.
항상 느림의 미학으로 찬찬 히 확인 또학인 하다보면 다 됩니다. 응원할께요 화이팅!~

네 있습니다. 업그레이드 해주세요
install sphinx
설치 후 sphinx.conf 파일을 편집하여 검색 인덱스와 소스를 확인하시고 정의 가 않되어있으면 재정의 해 주 셔야 합니다.
설정후에는  재시작하는것 필 해주시구요 또한 서버 재시작시 자동 부팅 되도록 해주시구요

그누보드 소스도 고쳐야 속도가 빨라질겁니다.

해당글 작성자가 그누보드에 수정해야 할 코드는 따로 설명해두진 않았네요.  

답변을 작성하시기 전에 로그인 해주세요.
전체 3

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT