편리

juso.sir.co.kr 도로명 주소 검색 시스템 구축 가이드 - Sphinx 설정

· 2014-08-27 (수) 17:31:02 · 6716

주소 데이터를 DB에 모두 입력하셨다면 이제 인덱싱 작업을 위한 Sphinx 설정을 해야합니다.

설치 가이드대로 설치를 하셨다면 Sphinx의 설정파일 경로는 /usr/local/sphinx/etc/sphinx.conf 입니다.

처음 설치하고 나면 sphinx.conf 파일은 없을 수도 있으며 sphinx.conf.dist 와 같은 예제 파일을 제공합니다.

 

아래는 juso.sir.co.k Sphinx 서버 sphinx.conf 파일의 내용입니다.

 

[code]

#

# Minimal Sphinx configuration sample (clean, simple, functional)

#

 

source dorodata

{

type = mysql

 

sql_host = localhost

sql_user = juso

sql_pass = juso1234

sql_db = juso

sql_port = 3306 # optional, default is 3306

 

        sql_query_pre = SET NAMES utf8

        sql_query               = \

                SELECT sn as id, sn, sido, gugun, beopname, ri, san, jibon, jibu, doroname, jiha, geonbon, geonbu, geonname, geonsangse, haengjeong, zipcode, daryang, geonname2, CONCAT_WS(' ', doroname, IF(jiha=1, '지하', ''), CONCAT(geonbon, IF(geonbu=0, '', '-'), IF(geonbu=0, '', geonbu)), geonname, geonsangse, daryang, geonname2) as doro, CONCAT_WS(' ', beopname, haengjeong, ri, IF(san=1, '산', ''), CONCAT(jibon, IF(jibu=0, '', '-'), IF(jibu=0, '', jibu))) as jibeon \

FROM dorodata \

                ORDER BY sn asc

 

        sql_attr_uint           = sn

        sql_field_string        = zipcode

        sql_field_string        = sido

        sql_field_string        = gugun

        sql_field_string        = doroname

        sql_field_string        = geonbon

        sql_field_string        = geonbu

        sql_field_string        = geonname

        sql_field_string        = geonsangse

        sql_field_string        = beopname

   sql_field_string    = haengjeong

        sql_field_string        = ri

        sql_field_string        = san

   sql_field_string    = jiha

        sql_field_string        = jibon

        sql_field_string        = jibu

   sql_field_string    = doro

   sql_field_string    = jibeon

   sql_field_string        = daryang

   sql_field_string        = geonname2

        #sql_query_info         = SELECT * FROM documents WHERE id=$id

}

 

 

index dorodata

{

        source                  = dorodata

        path                    = /usr/local/sphinx/var/data/dorodata

        docinfo                 = extern

enable_star = 1

min_infix_len = 1

        charset_type            = utf-8

        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

        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 = 32M

 

path = /usr/local/sphinx/var/data/testrt

charset_type = utf-8

 

rt_field = title

rt_field = content

rt_attr_uint = gid

}

 

 

indexer

{

mem_limit = 1536M

}

 

 

searchd

{

listen = 9312

listen = 9306:mysql41

log = /usr/local/sphinx/var/log/searchd.log

query_log = /usr/local/sphinx/var/log/query.log

read_timeout = 5

max_children = 30

pid_file = /usr/local/sphinx/var/log/searchd.pid

max_matches = 1000

seamless_rotate = 1

preopen_indexes = 1

unlink_old = 1

workers = threads # for RT to work

binlog_path = /usr/local/sphinx/var/data

}

[/code]

 

설정 파일의 내용을 간단히 설명해 보겠습니다. 저도 잘 모르기 때문에 간단히 설명할 수 밖에 없습니다. ^^;

 

먼저 source dorodata 설정 블럭에서 sql_host 등의 정보를 DB 테이블 정보에 맞게 수정해주셔야합니다.

이 정보를 가지고 sphinx 에서 DB에 접속에 주소 데이트를 인덱싱하기 때문입니다. 또한 sql_field_string 등의

sphinx Attribute를 이용해 주소 데이터를 필드를 각각 인덱싱되도록 했습니다. 이렇게 한 이유는 DB 서버없이

주소 검색을 처리하기 위해서입니다. Attribute 관련 내용은 http://sphinxsearch.com/docs/archives/2.1.4/attributes.html 를 참고하세요.

 

다음으로 index dorodata 설정 블럭은 데이터를 인덱싱할 때 어떻게 처리를 할지를 정하는 부분입니다.

source = dorodata 부분은 위에서 설정한 source dorodata 설정 블럭을 사용한다는 의미입니다. 한글 인덱싱을

위해 charset_table, ngram_len 와 ngram_chars 설정을 추가했습니다. ngram_chars 설정 값은 utf-8 일 때입니다.

그외 설정에 대해서는 http://sphinxsearch.com/docs/archives/2.1.4/indexing.html 를 참고하세요.

 

indexer 설정 블럭에서 mem_limit 를 1536M 로 설정했으며 이 설정은 메모리가 충분하다면 크게 잡아서 

인덱싱을 좀 더 빨리 처리할 수 있습니다. searchd 설정은 인덱싱한 데이터를 실제 검색하는 엔진에 대한

설정입니다. listen 부분은 포트를 설정하는 것으로 기본은 9312 입니다. max_matches 설정은 검색 결과를

최대 몇개까지 표시할 것인가를 결정하는 것입니다. 인덱싱 속도는 서버 사양에 영향을 받습니다.

 

 

추가적인 설정과 인덱싱 관련자료는 http://sphinxsearch.com/docs/archives/2.1.4/ 를 참고하세요.

 

첨부파일

sphinx.conf.zip (1.4 KB) 33회 2014-08-27 17:31
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
16-06-11 조회 2,847
16-02-15 조회 3,165
16-02-02 조회 2,825
16-01-25 조회 2,436
16-01-18 조회 2,534
16-01-08 조회 2,473
16-01-07 조회 2,501
16-01-05 조회 2,504
16-01-05 조회 2,804
16-01-05 조회 2,647
16-01-05 조회 2,695
16-01-04 조회 2,484
16-01-04 조회 2,584
16-01-04 조회 2,531
16-01-04 조회 2,449
15-12-30 조회 2,742
15-12-24 조회 2,566
15-12-24 조회 2,597
15-12-24 조회 2,626
15-12-24 조회 2,586
15-12-23 조회 2,554
15-12-16 조회 2,650
15-12-15 조회 2,732
15-12-11 조회 2,786
15-12-10 조회 2,713
15-11-09 조회 2,697
15-11-09 조회 2,871
15-10-06 조회 3,203
15-10-02 조회 3,045
15-05-29 조회 4,383
15-02-02 조회 4,165
15-01-18 조회 4,108
14-10-25 조회 8,205
14-10-25 조회 5,010
14-10-22 조회 7,019
14-10-22 조회 4,758
14-10-22 조회 4,688
14-10-18 조회 5,449
14-10-17 조회 5,816
14-10-17 조회 5,263
14-10-17 조회 8,693
14-10-17 조회 6,255
14-10-13 조회 4,070
14-10-13 조회 4,321
14-10-07 조회 6,032
14-09-24 조회 3,822
14-09-23 조회 3,894
14-09-22 조회 4,693
14-09-22 조회 5,941
14-09-22 조회 3,943
14-09-22 조회 3,578
14-09-21 조회 4,112
14-09-21 조회 3,662
14-09-20 조회 3,675
14-09-20 조회 3,582
14-09-20 조회 3,772
14-09-19 조회 3,658
14-09-19 조회 3,819
14-09-19 조회 3,700
14-09-19 조회 3,977
14-09-19 조회 3,756
14-09-19 조회 3,684
14-09-19 조회 3,906
14-09-19 조회 3,661
14-09-19 조회 3,648
14-09-19 조회 3,702
14-09-18 조회 3,692
14-09-18 조회 3,712
14-09-18 조회 3,876
14-09-18 조회 3,898
14-09-18 조회 3,929
14-09-18 조회 4,688
14-09-18 조회 5,267
14-09-18 조회 5,205
14-09-18 조회 4,004
14-09-18 조회 4,490
14-09-18 조회 4,144
14-08-30 조회 5,240
14-08-06 조회 5,891
14-08-06 조회 5,467
14-08-03 조회 4,976
14-06-12 조회 5,265
14-05-11 조회 3,583
14-05-11 조회 4,373
14-05-11 조회 4,472
14-05-09 조회 1.2만
14-05-01 조회 4,842
14-03-30 조회 4,309
14-03-23 조회 7,849
14-02-12 조회 3,782
13-10-29 조회 7,647
13-10-28 조회 8,576
13-09-29 조회 6,542
13-09-29 조회 4,174
13-07-23 조회 4,879
13-07-23 조회 1.2만
13-07-14 조회 4,622
13-07-14 조회 4,961
13-07-14 조회 5,934
13-07-14 조회 5,106