2

Sunspotの検索結果を、小さい値から大きい値の順に価格で並べ替えようとしています。

order_by :price, :asc

ただし、価格値がゼロのアイテムもあります。結果の先頭に配置されます。それらを除外するのではなく、最後に表示する良い方法はありますか?

4

3 に答える 3

4

schema.xmlの価格フィールドの定義に属性「sortMissingLast=true」を追加します

于 2012-08-09T05:41:08.603 に答える
0

ええ、schema.xmlのフィールドにsortMissingLast=trueを追加する必要があります。次のようになります。

<schema name="sunspot" version="1.0">
  <types>
    ...
    <!-- My custom types -->
    <fieldType name="sml_int" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
  </types>
  <fields>
    ...
    <!-- My custom fields -->
    <dynamicField name="*_sml_int" type="sml_int" multiValued="false" indexed="true"/>
  </fields>
  ...
</schema>

次に、コードでこれを行うことができます。

class MyModel < ActiveRecord::Base
  searchable do
    integer :price, as: :price_sml_int
  end
end
于 2016-09-16T11:06:30.920 に答える
0

schema.xmlのフィールドのfieldTypeでプロパティsortMissingLast="true"を使用します。

solrサーバーを再起動します。

(暗黙のデフォルト値はfalseです。)

于 2018-06-19T19:25:01.657 に答える