Solr 中的多值字段排序
我有一个 Solr 索引,将每个产品的价格存储在多值字段中。
我需要按价格对结果集进行排序,其中价格从低到高,从高到低。
我尝试对价格进行排序,它显示错误您无法对 multivalued=True 字段进行排序。
下面是我
<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) } });
solr XML有人可以用一些好的例子来解释吗?
I Have a Solr index that stores Price in a multivalued field for each Product.
I need to sort the result set by Price where the Price is Low to high and High to Low.
I try to use sorting on Price it's showing Error You can't sort on multivalued=True fields.
below is my solr XML
<arr name="sellprice">
<float>195.0</float>
<float>136.5</float>
<float>10.0</float>
</arr>
in schema.xml
<field name="sellprice" type="float" indexed="true" stored="true" multiValued="true"/>
In C# Code
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) } });
Can somebody explain with some good example?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Solr 不能很好地对多值字段进行排序。
文档
当您想要对产品从低到高或从高到低进行排序时,Solr 会选择什么价格?从示例中您的销售价格为 0 以及 195 ?
函数查询也不允许在多值字段上使用 max 或 min。
您必须将最高和最低售价保存为单值字段的选项,并使用这些字段进行排序。
并使用这些字段进行排序。
Sorting on multivalued fields does not work fine with Solr.
Documentation
When you want to sort the products from low to high or high to low, what price will Solr pick ? As from the example you have a Sell price of 0 as well as 195 ?
The function queries also do not allow to use max or min on the multivalued fields.
The option you have to save the highest and lowest sell price as single valued fields, and use those fields for sorting.
and use these fields for sorting.