2011-10-21 18 views
9

I各Productの複数値フィールドにPriceを格納するSolrインデックスがあります。Solrの複数値フィールドによるソート

私は、価格が低〜高、低〜低の価格で結果セットをソートする必要があります。

私は並べ替えを使用しようとしています価格が表示されていますエラー多値= Trueフィールドを並べ替えることはできません。

以下

が私のSolr XML

<arr name="sellprice"> 
<float>195.0</float> 
<float>136.5</float> 
<float>10.0</float> 
</arr> 
のschema.xmlで

<field name="sellprice" type="float" indexed="true" stored="true" multiValued="true"/> 
C#コードで

ISolrQueryResults<ProductTest2> powerArticles = solr.Query(new 
SolrQuery("WebCategory_Id:10") && new SolrQueryInList("FilterID", 
    146), new QueryOptions { FilterQueries = new[] { new 
SolrQueryByRange<decimal>("sellprice", 10, 40) }, OrderBy = new[] { 
    new SolrNet.SortOrder(sellprice, desc) } }); 

で誰かがいくつかの良い例で説明できますか?

答えて

14

多値フィールドのソートは、Solrでは正常に動作しません。ドキュメント

ソート

は、文書の「スコア」で行われ、または任意の多値=「false」をインデックス化=「true」をフィールドにそのフィールドを提供することが可能であるいずれか 非トークン化(すなわち:何アナライザを持っていない)、またはのみ は、単一の用語を生成Analyzerを使用しています(例:

あなたは安いものから高いものやローからハイに製品をソートしたい

、Solrには、どのような価格を選択します)KeywordTokenizerを使用していますか?この例のように、売却価格は0と同様に195ですか?

The function queries also do not allow to use max or min on the multivalued fields.

あなたは、単一の値フィールドとして最高と最低の販売価格を保存し、ソートするため、これらのフィールドを使用する必要がありますオプション。

highest_sell_price=195 
lowest_sell_price=0 

これらのフィールドをソートに使用します。

+0

私は低価格から高価格、高価格から高価格、そして最高価格を選ぶ場合。 – Ashutosh

+1

答えを更新しました。これを行うための直接的な方法はないようです。 – Jayendra

+0

あなたのクイック返信をありがとう。新しい質問を掲載しました。私に例を挙げてください。 http://stackoverflow.com/questions/7846018/data-import-in-solr-from-multiple-entity – Ashutosh

関連する問題