2017-04-24 4 views
2

전자 상거래 사이트에서 Azure Search를 사용하고 있습니다. 이제 검색 페이지에서 페이징 문제가 발생했습니다. 내가 검색 페이지를 다시로드 할 때 제품의 다른 순서를 얻을 수 있습니다. 따라서 페이징을 사용할 때 동일한 페이지가 다른 페이지에 표시 될 수 있으며 이는 매우 중요합니다. 결과가 같을 때 Azure 검색에서 페이징

은 내가 잘못 무슨 일이 일어나고 있는지 연구를 시작했고, 나는 https://docs.microsoft.com/en-us/rest/api/searchservice/add-scoring-profiles-to-a-search-index#what-is-default-scoring

검색 점수 값이 결과 세트에 걸쳐 반복 될 수 마이크로 소프트 문서에이 정보를 발견했습니다. 예제의 경우 점수가 1.2 인 항목 10 개, 점수가 1.0 인 항목 20 개, 점수가 0.5 인 항목 20 개가있을 수 있습니다. 복수 검색 에 동일한 검색 점수가있는 경우 동일한 점수 항목의 순서가 정의되어 있지 않으며 안정적이지 않습니다. 검색어를 다시 실행하면 항목의 위치가 전환 될 수 있습니다. 동일한 점수를 가진 두 항목이 주어지면, 은 어떤 것이 먼저 나올지 보장 할 수 없습니다.

그래서 제대로 얻으면 제품에 동일한 점수가 있기 때문에 문제가 발생합니다.

해결 방법?

답변

2

제대로 잡았습니다! 귀하가 얻는 제품의 점수가 같기 때문에 어떤 제품이 먼저 나올지 보장 할 수 없습니다. 이 단계에서이를 피하기 위해 $ orderby 매개 변수에 고유 값이있는 필드를 추가하여 동일한 순서를 보장 할 수 있습니다. 그러나이 접근법은 득점을 고려하지 않습니다. 우리는 현재이 문제에 대한 해결책을 찾고 있습니다. 솔루션을 사용할 수있게되면이 답변이 업데이트됩니다 (이 시점의 ETA는 몇 달이 아니라 몇 주간).

1

search.score() 함수를 사용하여 점수순으로 정렬 할 수 있습니다. 아래 링크에서 https://docs.microsoft.com/en-us/rest/api/searchservice/odata-expression-syntax-for-azure-search 링크를 클릭하십시오. "여러 정렬 기준을 지정할 수 있습니다. 식 순서에 따라 최종 정렬 순서가 결정됩니다. 예를 들어 점수에 따라 내림차순으로 정렬하고 등급순으로 정렬하려면 구문은 $ orderby = search.score() desc, rating desc."

+0

답변 해 주셔서 감사합니다. –

관련 문제