我有一个 Solr 索引,将每个产品的价格存储在多值字段中。
我需要按价格对结果集进行排序,其中价格从低到高,从高到低。
我尝试对价格进行排序,它显示错误您无法对 multivalued=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) } });
有人可以用一些好的例子来解释吗?
Solr 不能很好地对多值字段进行排序。
文档
排序可以在文档的“分数”上完成,也可以在任何 multiValued="false" indexed="true" 字段上完成,前提是该字段是
非标记化(即:没有分析器)或使用仅分析器
生成单个术语(即:使用 KeywordTokenizer)
当你想把产品从低到高或从高到低排序时,Solr会选择什么价格?从示例中您的销售价格为 0 和 195 ?
函数查询也不允许在多值字段上使用 max 或 min。 https://issues.apache.org/jira/browse/SOLR-2522
您必须将最高和最低售价保存为单值字段的选项,并使用这些字段进行排序。
highest_sell_price=195
lowest_sell_price=0
并使用这些字段进行排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)