如何在没有多值的情况下对Solr多值结果或存储数据进行排序

时间:2017-07-05 13:24:38

标签: sorting search elasticsearch solr solr6

我想按sku排序solr结果,

以下是我对排序结果的查询

http://localhost:8983/solr/test_core/select?sort=skucode+asc&q=*skucode*&wt=xml

skucode标记在数字字段中存储的数据。

<str name="id">39902395</str>
<arr name="skucode"><long>5076501</long></arr>

我使用xml文件在solr中存储了数据。

它给出了can not sort on multivalued field: skucode

的错误

或存储没有多值的数据

请告诉我如何在没有多值的情况下存储数据或如何从后端进行更改。

1 个答案:

答案 0 :(得分:0)

只有在您执行排序的字段是单值而不是多值时,您的查询才有效。您可以使用函数查询对多值字段执行排序。

http://localhost:8983/solr/test_core/select?sort=field(skucode,max)+ASC&q=*skucode*&wt=xml

有关函数查询的更多信息: - https://cwiki.apache.org/confluence/display/solr/Function+Queries

您使用的查询也可以使用的第二种方法是您可以更改skucode的数据类型并使其成为单值。在schema.xml中将skucode的单值更改数据类型从long更改为long。

<field name="skucode" type="long"/>

P.S: - 更改其数据类型后,您需要重新编制索引以反映您的更改