在Solr中使用多值字段排序

Ash*_*osh 10 lucene solr solrnet

我有一个Solr索引,可以在每个产品的多值字段中存储Price.

我需要按价格对结果集进行排序,其中价格从低到高,从高到低.

我尝试使用Price它显示错误排序您无法对多值=真实字段进行排序.

下面是我的solr XML

<arr name="sellprice">
<float>195.0</float>
<float>136.5</float>
<float>10.0</float>
</arr>
Run Code Online (Sandbox Code Playgroud)

在schema.xml中

 <field name="sellprice" type="float" indexed="true" stored="true" multiValued="true"/>
Run Code Online (Sandbox Code Playgroud)

在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) } });
Run Code Online (Sandbox Code Playgroud)

有人可以用一些好的例子解释一下吗?

Jay*_*dra 14

使用Solr对多值字段进行排序不能正常工作.

文档

可以在文档的"得分"上进行排序,或者在任何multiValued ="false"indexed ="true"字段上进行排序,前提是该字段是非标记化的(即:没有分析器)或使用仅生成分析的分析器单个术语(即:使用KeywordTokenizer)

当您想要将产品从低到高或从高到低排序时,Solr选择什么价格?从示例中您的卖出价为0以及195?

函数查询也不允许在多值字段上使用max或min.

您必须将最高和最低卖价保存为单值字段,并使用这些字段进行排序.

highest_sell_price=195
lowest_sell_price=0
Run Code Online (Sandbox Code Playgroud)

并使用这些字段进行排序.

  • 如果它回答了你的问题,可能有助于接受答案. (4认同)