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

 

+ Recent posts