2017-04-24 1 views
2

私は自分の電子商取引サイトでAzure Searchを使用しています。これで検索ページのページングに問題が発生しました。私は検索ページをリロードするとき、私は製品の異なる順序を得ることができます。だから私はページングを使用しているときに私は別のページで同じ製品を見ることができ、これは重要です。結果が等しいスコアの結果がアズールでページングされる

私が間違って何が起こっているのか研究を開始し、私はこの情報は、Microsoftのドキュメントに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つのアイテムがある場合、 は最初に表示される保証がありません。

私はそれが正しく得られたので、製品には同じスコアがあるので、私はこの問題に直面します。

これを修正するにはどうすればよいですか?

答えて

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

ありがとうございます! –

関連する問題