11

次のソート スクリプトは、0.2 では機能していましたが、0.9 では失敗します。

{
  "_script": {
    "script": "org.elasticsearch.common.Digest.md5Hex(doc['myId'].value + 12345)",
    "type": "string",
    "order": "asc"
  }
}

私が受け取っているエラーは次のとおりです。

PropertyAccessException[[Error: unresolvable property or identifier: org]

この作業を行うカスタム スコア クエリの作成を提案する投稿を見たことがあります。私はすでにカスタム スコア クエリを使用しています。この並べ替えは、スコアが一致した場合の二次的な並べ替えであり、定期的に発生する可能性があります (発生するはずです)。上記の例の定数は、検索を実行する人に基づいているため、検索する各人はランダム化されていますが、一貫した並べ替えが行われ、すべての人に同じ結果が常に一番上に表示されるとは限りません.

これが発生する理由と、同じ並べ替え機能を維持しながら修正する方法についての情報が見つかりません。新しい方向への助けや指摘は大歓迎です。

4

1 に答える 1

4

org.elasticsearch.common.Digestメーリング リストであなたの投稿に返信しました。問題は、elasticsearch から削除されたことが原因です。Java に慣れていれば、おそらく Java ネイティブ スクリプトを作成する方が簡単でしょう。

一方、ここでの質問にはさらに詳細が記載されていることがわかります。スクリプトの並べ替えを使用して、目的を達成することを回避できるかどうか疑問に思っていました。

あなたのユースケースから、最近追加されたrescore queryについて考えさせられます。これにより、セカンダリ クエリを使用して上位 K 件の結果を再スコアリングできます。再スコアは各シャードで実行されることを考慮してください。したがって、最初の 10 個のドキュメントを要求すると、再スコアはシャードごとに上位 10 個のドキュメントで発生し、削減フェーズで選択される上位 10 個のドキュメントに影響します。返されるドキュメントの順序を変更することをもっと探していたようですが、rescore クエリでは、rescore プロセス自体が原因でこれらのドキュメントが変更される可能性があります。

今後のバージョン 0.90.4 には、ランダムにシードされた順序付けも含まれます。これは、並べ替えのランダムな側面に役立つはずです。詳細については、関連する問題をご覧ください。

rescore クエリを、ランダムな順序付けを可能にする関数スコア クエリと組み合わせると便利です。

于 2013-09-06T21:40:47.713 に答える