2014-07-20 3 views
0

solr로가는 항목마다 이와 같은 구조가 있다고 가정 해 봅니다. 문서가 먼저 수정되어 저장됩니다. 현재 수정되는 방식은 숫자와 점수 사이의 연결이 끊어지는 것입니다. 그러나 필요한 경우이를 다른 것으로 변경할 수 있습니다. 우리가 원하는 무엇Solr 단어의지도를 기반으로 검색 결과의 관련성을 높입니다. 값

"keywords" : [ 
      { 
        "score" : 1, 
        "content" : "great finisher" 
      }, 
      { 
        "score" : 1, 
        "content" : "project" 
      }, 
      { 
        "score" : 1, 
        "content" : "staying" 
      }, 
      { 
        "score" : 1, 
        "content" : "staying motivated" 
      } 
    ] 

조회가 점수가 연관되는 단어/h 열을 포함하는 경우에 "점수"값을 사용하여 문서에 SOLR 쿼리 결과에 활력을 불어 넣을 것입니다.

그래서 각 문서에는 점수가있는 키워드의 "지도"가 다릅니다. 그리고 Solr이 현재 어떻게 수행하는지에 대한 관련성은 정상적으로 계산되지만,이 맵과 쿼리에 표시된 단어에 따라 향상됩니다.

내가 본 것으로부터 우리는 몇 가지 기준에 따라 결과를 향상시킬 수 있지만이 기준은 상황에 따라 매우 동적입니다. 구현 방법이나 시작 위치를 잘 모릅니다.

답변

0

현재로서는 Solr에 이와 같은 기능을 지원하지 않습니다. 가장 이상적인 방법은 별도로 부스트 된 multiValued 필드의 각 용어를 사용하는 것이지만 현재로서는 불가능합니다 (진행 상황은 없지만) SOLR-2499에서 추적됩니다.

그러나이 문제를 해결할 수있는 방법이 있습니다. 위의 이슈 트래커에서 두 가지가 제안됩니다. 페이로드와 커스텀 BoostingTermQuery를 사용하는 것에 관해서는 많이 말할 수 없지만 동적 필드를 사용하는 것은 가능합니다. 단점은 대부분의 필드 이름과 쿼리/정렬이 많은 경우 캐시 크기를 관리한다는 것입니다. 용어가 적은 작은 색인이있는 경우 작동하지만 더 많은 동적 필드가있는 더 큰 숫자 (5,6 자)는 빠르게 메모리를 소모합니다 (각 정렬/쿼리에 대해 하나의 조회 캐시가 있으므로 문서 수와 같은 크기의 int/긴 배열.

또 다른 제안은 using function queries together with a boost보고하는 것입니다. 여기에 대신 필드를 참조하는 경우, 당신은 캐시 문제를 방지 할 수 있습니다. 그것을보십시오!