Solr 中的多值字段排序

发布于 2024-12-11 16:11:11 字数 850 浏览 0 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空‖城人不在 2024-12-18 16:11:11

Solr 不能很好地对多值字段进行排序。

文档

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

当您想要对产品从低到高或从高到低进行排序时,Solr 会选择什么价格?从示例中您的销售价格为 0 以及 195 ?

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

您必须将最高和最低售价保存为单值字段的选项,并使用这些字段进行排序。

highest_sell_price=195
lowest_sell_price=0

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

Sorting on multivalued fields does not work fine with Solr.

Documentation

Sorting can be done on the "score" of the document, or on any multiValued="false" indexed="true" field provided that field is either
non-tokenized (ie: has no Analyzer) or uses an Analyzer that only
produces a single Term (ie: uses the KeywordTokenizer)

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.

highest_sell_price=195
lowest_sell_price=0

and use these fields for sorting.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文