편리

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

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

주소 데이터를 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건
+
제목 글쓴이 날짜 조회
12-08-29 조회 3,948
12-08-07 조회 3,617
12-08-03 조회 3,514
12-07-31 조회 3,622
12-07-30 조회 3,581
12-07-16 조회 3,792
12-07-15 조회 3,516
12-07-07 조회 3,493
12-07-06 조회 3,638
12-07-03 조회 3,643
12-06-29 조회 3,231
12-06-22 조회 3,596
12-06-17 조회 3,729
12-05-21 조회 3,782
12-05-02 조회 3,359
12-05-02 조회 4,156
12-05-02 조회 3,269
12-04-30 조회 3,441
12-04-30 조회 3,136
12-03-17 조회 3,981
12-03-10 조회 3,344
12-03-08 조회 3,786
12-03-03 조회 3,525
12-02-27 조회 4,938
12-02-17 조회 4,286
12-02-16 조회 4,470
12-02-03 조회 3,265
12-01-31 조회 3,042
12-01-24 조회 3,081
12-01-17 조회 3,834
12-01-05 조회 3,390
11-12-30 조회 3,023
11-12-23 조회 4,646
11-12-08 조회 3,380
11-12-07 조회 4,363
11-11-27 조회 3,788
11-11-25 조회 4,130
11-11-23 조회 3,521
11-11-22 조회 3,455
11-11-09 조회 3,186
11-10-23 조회 3,088
11-10-19 조회 3,062
11-10-08 조회 2,768
11-10-04 조회 2,777
11-10-04 조회 5,222
11-09-01 조회 4,280
11-08-13 조회 2,452
11-08-06 조회 3,145
11-07-11 조회 3,543
11-06-27 조회 2,918
11-06-21 조회 2,565
11-06-13 조회 2,370
11-06-07 조회 2,379
11-05-26 조회 2,370
11-04-20 조회 2,680
11-03-21 조회 2,770
11-03-18 조회 2,465
11-03-11 조회 2,505
11-02-07 조회 2,329
11-01-18 조회 2,641
11-01-12 조회 2,364
11-01-06 조회 2,484
10-12-10 조회 2,745
10-12-09 조회 2,419
10-12-08 조회 4,996
10-11-29 조회 2,552
10-11-28 조회 2,750
10-11-28 조회 2,592
10-11-19 조회 2,785
10-11-04 조회 2,678
10-10-21 조회 2,388
10-10-19 조회 3,339
10-10-12 조회 2,661
10-10-07 조회 2,493
10-09-30 조회 3,448
10-09-17 조회 3,844
10-09-17 조회 3,811
10-05-31 조회 3,476
09-12-31 조회 3,628
09-07-23 조회 4,944
08-09-16 조회 3,177
08-09-06 조회 2,906
08-09-04 조회 3,332
08-08-16 조회 4,383
08-08-15 조회 3,252
08-08-14 조회 4,463
08-08-12 조회 3,836
08-07-23 조회 2,758
08-07-10 조회 3,692
08-07-04 조회 2,917
08-06-27 조회 7,571
08-06-19 조회 4,857
08-05-27 조회 5,473
08-05-25 조회 5,305
08-05-23 조회 3,375
08-05-23 조회 4,509
08-05-21 조회 4,893
08-05-20 조회 4,016
08-05-20 조회 3,254
08-04-18 조회 4,287