일치하는 수를 기준으로 문서의 순위를 지정하려는 다중 값 정수 필드가있는 경우 각 일치 항목에 대해 부스트 쿼리를 적용하십시오. 예를 들어 크기가 다른 일련의 모니터가있는 경우 유효한 각 크기에 대해 부스트를 적용 할 수 있습니다 (예를 들어 해킹하여 하이텍 코어의 예제 문서와 함께 테스트 한 결과, 그것으로 고집한다.) 두 개의 관련 문서가 있습니다. 하나는 VA902B
이고 다른 하나는 sizes
이며 값이 23, 28 및 32 인 다중 값 필드로 제공되고 하나는 3007WFP
이며 동일한 필드에는 값이 23, 29, 36입니다. 여기
나는 모든 문서를 요구하지만, 나에게 상단의 모두 사이즈 28 사이즈 (23)가 그 사람들을 제공하고있어 다음 중 하나 사이즈 28 사이즈 23, 후 다른 문서가 그들 :
을
?bq=sizes:28&bq=sizes:23&defType=edismax&q=*:*
내가 크기 중 하나를 일치 만에 문서의 집합을 제한하려면, 내 주 쿼리로 것을 사용할 수 있습니다
?defType=edismax&q=sizes:(23%2028)
..이 내가 당신의 가정 발견 어디 일치 횟수에 관계없이 점수가 동일하다는 것은 거짓입니다. - 당신이 원하는 행동이 SOLR에 대한 표준 동작입니다
"explain": {
"VA902B": "\n2.0 = sum of:\n 1.0 = sizes:[23 TO 23]\n 1.0 = sizes:[28 TO 28]\n",
"3007WFP": "\n1.0 = sum of:\n 1.0 = sizes:[23 TO 23]\n"
},
.. 부스트를 적용하기위한 필요가 없음을 의미한다 : URL에 &debugQuery=true
을 추가하는 것은 우리에게 각 문서에 대한 세부 점수 정보를 제공합니다. 이것은 처음 생각 이었지만 댓글에 준 검색어에 대한 정확한 대답을 제공해야합니다.
하지만 난 당신이 부스트를 적용 내 전략뿐만 아니라 일한 얼마나 보여 드리겠습니다 :
?bq=sizes:28&bq=sizes:23&defType=edismax&q=sizes:(23%2028)&debugQuery=true
.. 지금은 1.0을 기록됩니다 이후 각 문서의 점수를 두 배로 효과적으로 것을 우리에게 알려줍니다 (쿼리에서) +1 (부스트에서) 각 일치합니다.
"explain": {
"VA902B": "\n4.0 = sum of:\n 2.0 = sum of:\n 1.0 = sizes:[23 TO 23]\n 1.0 = sizes:[28 TO 28]\n 1.0 = sizes:[28 TO 28]\n 1.0 = sizes:[23 TO 23]\n",
"3007WFP": "\n2.0 = sum of:\n 1.0 = sum of:\n 1.0 = sizes:[23 TO 23]\n 1.0 = sizes:[23 TO 23]\n"
},
는 또한 표준 루씬 쿼리 파서 (그리고 dismax/edismax
bq
을 지원하는)로
q=sizes(23 28)
쿼리를 테스트 및 동작은 동일했다.
검색어는 어떤 모양입니까? – MatsLindh
실제 숫자는 롤 번호입니다. 그러나 주어진 예제에있는 방법입니다. - curl http : // localhost : 8983/solr/XYZ/query -d '{ "query": "enrollment : Amit Manish "sort": "score desc"} '' – Manish
점수가 정수로 계산되지 않기 때문에 정말 중요합니다. 귀하의 질문에 토큰 화 된 텍스트 필드가 있다면 점수 계산이 다릅니다. Solr에게 주어진'query' 매개 변수도 없습니다 (정규 질의는'q'를 통해 주어집니다). 질문을 할 때, 당신이 해결하려고하는 것과 같은 질문이 중요합니다. 대신에 찾으려는 각 값에 대해 boost 쿼리를 사용하여 실제 문제를 해결할 수 있습니다 ('bq = field : value & bq = field : value2'). – MatsLindh