2011-10-21 52 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

相关问题