我有一个Solr索引,可以将Price存储在每个产品的多值字段中。
我需要按价格对结果集进行排序,其中价格从低到高,从高到低。
我尝试在价格上使用排序显示错误您无法对多值=真实字段进行排序。
下面是我的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) } });
有人可以用一些好的例子来解释吗?
答案 0 :(得分:14)
使用Solr对多值字段进行排序不能正常工作。
文档
可以对文档的“得分”进行排序,也可以对任何multiValued =“false”indexed =“true”字段进行排序,前提是该字段为 非标记化(即:没有分析器)或仅使用分析器 产生一个Term(即:使用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
并使用这些字段进行排序。