예 링크가 적절하다고 생각합니다. 그것은 우리가 모든 검색에 부스트가 적용 원하기 때문에 우리가 사용하는 것입니다 우리는 귀하의 경우 예를 들어, 매우 자주 논리를 변경하지 마십시오 : -
이 경우
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="boost">product(
map(query($type1query),0,0,1,$type1boost),
map(query($type2query),0,0,1,$type2boost))</str>
<str name="type1query">Category:"News"</str>
<double name="type1boost">1000.0</double>
<str name="type2query">Category:"Image"</str>
<double name="type2boost">900.0</double>
</lst>
</requestHandler>
쿼리 기능에 대한 점수를 반환 특정 쿼리. 뉴스, 이미지 등을 카테고리로 검색합니다.
map 함수에는 다음과 같은 서명이 있습니다. map (x, min, max, target, value)은 x 및 max를 포함하는 모든 x 값을 대상에 매핑합니다. min, max, target, value는 상수입니다. min과 max 사이에 있지 않으면 필드의 값 (또는 "value")을 출력합니다. 즉, 쿼리의 결과가 양수이면 (일치가있는 경우) 부스트 (1000,900 등)가 출력됩니다. 당신은 당신이 가지고있는 다른 순위 로직을 압도 할 수 있기 때문에 부스트 값으로 플레이해야합니다. 뉴스에서 더 잘 어울리는 뉴스 순위에서 가난한 검색 결과를 얻을 수 있습니다.
이러한 추가 기능을 사용하여 별도의 요청 처리기를 만들어 다른 검색을 위해 무시할 수 있습니다. 분명히 solrconfig를 변경하고 Solr을 다시 시작해야합니다. 변경 사항이 있으면 문제가 될 수 있습니다.
그렇지 않으면 bq (boost query) 매개 변수를보십시오. 실제로 내부적으로 이런 일을 생성
bq=Category:News^1000.0+Category:Image^900...
는
boost(+*:* (Category:News^1000 + Category:Image^900))
이것은 부스트가 좋은 유연 검색 코드에서 수행하는 것을 의미한다. 개인적으로 나는이 작업 방식을 선호합니다.