2016-06-22 3 views
0

저는 Solr 5.3.0을 사용하여 뉴스 검색 시스템을 만들고 있습니다. 나는 뉴스의이 다음과 같은 필드가 있다고 가정 : {Solr 여러 필드의 관련성 및 포함으로 정렬

  • 제목을
  • 내용
  • 날짜
  • NewsType

}

내가 회사 이름의 두과를 검색하고 이 검색 시스템에서 관리자 이름. "Stark Industries"를 회사 이름으로, "Tony Stark"를 관리자 이름으로 사용합니다. 내가 날짜별로 결과를 정렬 할 (이 쉽게 할 수있다), 관련성, 그리고 다음과 같은 규칙 :

A :

  1. 뉴스 용어가 모두 '제목'필드에 존재하고 '콘텐츠'고 들.

  2. 뉴스는 '제목'필드에만 존재한다는 뉴스입니다.

  3. 뉴스는 '콘텐츠'필드에만 존재한다는 뉴스입니다.

B :

두 회사 명 (스타크 산업) 및 관리자 이름 (토니 스타크)가 존재 뉴스 것을
  1. .

  2. 회사 이름 만 존재한다는 뉴스.

  3. 관리자 이름 만 존재한다는 뉴스입니다.

순서는 1> 2> 3이어야합니다 (1은 2의 상단에 있어야 함). 그리고 A와 B는 뉴스에 점수를 매기는 두 가지 다른 방법이어야합니다. 그리고 최종 점수는 A * B와 같을 수 있습니다.

이 코드 defType = edismax & qf=notice_title^200+notice_content을 사용하여 "제목"필드에 "내용"필드보다 더 많은 가중치를 부여합니다. 그래서 "제목"필드를 "내용"필드보다 중요하게 만듭니다.

그러나 이렇게하면 A1> A2> A3인지 확인할 수 없습니다. '제목'입력란의 점수 만 증가시킵니다. 규칙 B와 동일하므로 qf를 사용하여 Comany 이름의 가중치를 높일 수 있습니다.

도움이 될 것입니다 (제목 & & 컨텐츠) :(회사 명 & & ManagerName)의 무게를 증가시킬 수있는 방법이 있다면. (두 필드 모두에 두 용어가 존재 함을 의미합니다.) 그러나이 구문은 qf에서 작동하지 않습니다.

도움을 주시면 감사하겠습니다.

답변

0

해당 필드에 omitTermFreqAndPosition을 설정하면 필드의 용어 빈도가 무시되므로 문서에 용어가 나타나는 횟수에 독립적입니다.

일반적으로 이와 같은 엄격한 규칙을 사용하는 것보다 관련성 계산에 약간 유창한 것이 좋지만 함수 쿼리로 정렬하여 구현할 수 있습니다. Using the function query을 사용하면 쿼리를 직접 실행 한 다음 각 쿼리별로 정렬 할 수 있습니다.

0

이를 달성하기 위해 Solr 부스트 쿼리를 사용하십시오.

+0

bq 필드를 사용하셨습니까? 제가 어떻게 할 수있는 아이디어 나 예를 들려 주시겠습니까? 고맙습니다! –

+0

Ok는 나의 대답을 곧 업데이트 할 것이다! 내가 같은 Solr을 사용하고있을 때 그들은 당신을 위해 일할 것입니다. –

관련 문제