inv = 0(0〜1000の可能な値)を持つすべての文書を結果セットの最後まで降格させたいと思います。私は名前のような他の並べ替えのオプションを持っているクエリの一部としてまたdesc。例えばSolrは条件がすべての文書を降格します
は、以下の私が一番下までINV = 0ですべての文書を押し、次に「名前ASC」並べ替えを適用したい、ここに...
Doc1 : name=apple , Inv=2
Doc2 : name=ball , Inv=1
Doc3 : name=cat , Inv=0
Doc4 : name=dog , Inv=0
Doc5 : name=fish , Inv=4
Doc6 : name=Goat , Inv=5
私は、ソートの下に達成したい私のSolrの文書です。 "(:と-inv:" 0 ")^ 999.0" & DEFTYPE: "edismax" ここ
Doc1
Doc2
Doc5
Doc6
Doc3
Doc4
私のSolrリクエストは
BQのようなものです結果を降格させるために私が与えた順位です。
この追加クエリは正常に機能します。 inv = 0のすべての文書を一番下に移動します。
しかし、私が& sort = name ascをsolrクエリに追加すると、bq..iよりも "sort"の方が優先され、 "name asc"という結果が表示されます。
Doc1 : name=apple , Inv=2 Doc2 : name=ball , Inv=1 Doc3 : name=cat , Inv=0 Doc4 : name=dog , Inv=0 Doc5 : name=fish , Inv=4 Doc6 : name=Goat , Inv=5
誰でも私を助けてください。 ?
ありがとう:
別のオプションは、それがインベントリにかいないのかどうかに応じて、ソートフィールドのための1または0のいずれかを取得する機能
min
を使用することです。しかし、私はinv(在庫は0から1000までの値を持つことができます)でソートしたくありません。私はちょうど名前で並べ替えるが、最後に0の値を持つすべてのレコードを持っている。ここで使用可能なマップ関数です。どうすれば使用できますか – user3085317"最後に0の値を持つすべてのレコードを持つ"デフォルトのソートです。図示のように 'if'関数のクエリ(または最小バージョン)を使うことで、ソートのための唯一の値は0または1になります。次の並べ替えフィールドは、その並べ替えの方向を再度指定します。期待通りの結果が得られない場合は、例を挙げてください。マップを使用する必要はありませんが、可能であれば、ドキュメントを最後に取得するために値をソートする必要があります。 – MatsLindh
こんにちは、私は試し&ソート=分(1、フィールド(インベントリ))のdesc、name_ntk descそれは動作しませんでした。 – user3085317