[SOLR] solr의 다양한 가중치 적용방법

boost기법이라 하면 검색엔진에서 검색어, 문서, 필드별로 별도의 추가(혹은 감소)가중치를 적용하는 방법을 이야기하며, 이를 가지고 업무환경에 적합한 검색결과를 얻을 수 있도록 하는 것을 말한다.
예를들어 문서의 "제목"은 "본문"보다 가중치를 높게 주어 같은 단어가 제목에서 나온 경우를 우선적으로 보여줄 수 있도록 하는 경우를 말할 수 있을 것이다.

solr는 "색인", "검색"시에 각각의 boost방법들을 제공한다.

  1. 색인시
    • 문서 boosting
      boost = <float> ? default is 1.0
    • 필드 boosting
      boost = <float> ? default is 1.0
       1: <add>
       2:   <doc boost="2.5">
       3:     <field name="employeeId">05991</field>
       4:     <field name="office" boost="2.0">Bridgewater</field>
       5:   </doc>
       6: </add>











    위의 예는 emplyeeId가 05991인 문서에 2.5의 가중치를 주었으며, 이와 동시에 office라는 필드에 2.0의 가중치를 주었다.

  2. 검색시
    • 필드 boosting
      • standard request handler의 경우
        http://localhost:8983/solr/select/?q=title:superman^2+subject:superman
        제목의 superman에 2.0의 가중치를 부여
      • dismax request handler의 경우
        http://localhost:8983/solr/select/?q=superman&qf=title^2+subject
        제목의 superman에 2.0의 가중치를 부여
    • 쿼리(검색어) boosting
      http://localhost:8983/solr/select/?q=title:superman^2
      superman에 2.0의 가중치를 부여
    • Boost 함수
      검색결과의 필드값에 대해 함수를 적용하여 boosting할 수 있도록 지원한다.
      함수에 대한 자세한 설명을 solr 위키를 참조

개인적인 판단은 검색시 boosting하는 방법은 아무래도 실시간으로 연산을 하다보니 검색속도가 느려질 수 있을 것 같다.
대신에 색인시 하는 방법은 속도는 그에 비해 빠를 수 있겠으나, 가중치값이 틀려지게 되면 재색인을 해야 하는 불편함이 있을 것으로 생각된다.
(직접 해 보진 않았음)

by 슈퍼맨 | 2008/09/24 16:56 | 루씬/SOLR/엘라스틴 | 트랙백 | 덧글(4)

트랙백 주소 : http://esconsult.egloos.com/tb/866872
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 제우스 at 2008/09/24 20:02
solr에 대해서 카테고리도 있는 것을 보니깐 집중적으로 다뤄주실것 같아서 기쁘네요. ^^
제 블로그에서는 너무 깊은 정보만을 얘기하는 것 같았는데 슈퍼맨님 블로그에서
가볍고 접근하게 쉽게 설명을 해주시니 처음 접하시는 분들은 편하게 쓸수 있을듯하네요
solr 1.3의 업그레이드에 대해서 시간을 내서 테스트 해보도록 해야겠네요 ^^


Commented by 슈퍼맨 at 2008/09/24 20:54
안녕하세요..
저도 처음에 solr를 접할때 제우스님 블로그을 많이 참조하였더랬습니다. ^^;
이렇게 방문해 주시니 영광이네요...
1.3을 테스트하시면 결과는 알려주실꺼죠?
Commented by webJOY at 2008/09/26 13:39
슈퍼맨님은 solr를 이용해 기업 검색 컨설팅을 준비하고 있나 보네요.ㅎㅎ solr 코드를 보진 않았지만 검색 시에 boosting하는 것도 큰 부담이 되지 않습니다. 저런 종류의 booting 값은 문서별 score에 그냥 더 하기만 합니다. 오히려 긴 multiterm 쿼리의 경우에는 쿼리 부스팅이 더 부담이 적을 수도 있네요^^ 근데 solr용 한글 형태소 분석기는 확보하셨나요?
Commented by 슈퍼맨 at 2008/09/28 00:39
안녕하세요~
제가 아는 어떤 검색엔진은 문서수가 많을 경우에는 쿼리 부스팅이 훨씬 느렸던 경험이 있었거든요...^^;
필요하면 공개 형태소분석기를 JNI로 붙여서 쓸 생각입니다.
아니면 기본으로 들어있는 바이그램도 괜찮구요...

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶