2011-10-21 91 views
9

我有一個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。

文檔

排序可以在文檔的「得分」來完成,或在任何多值=「假」索引=「真」字段提供的字段是 非標記化(即:沒有分析儀)或使用僅 產生單一期限的分析(即:使用KeywordTokenizer)

當你想從低的產品排序,以高或低,都會Solr的挑什麼樣的代價?從例子中可以看出,賣出價格爲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

相關問題