Сортировка с многозначным полем в Solr - PullRequest
10 голосов
/ 21 октября 2011

У меня есть индекс Solr, который хранит цену в многозначном поле для каждого продукта.

Мне нужно отсортировать результат, установленный по цене, где цена от низкой к высокой и от высокой к низкой.

Я пытаюсь использовать сортировку по цене, в которой отображается ошибка. Вы не можете сортировать по многозначным = истинным полям.

ниже мой 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) } });

Может кто-нибудь объяснить хорошим примером?

1 Ответ

14 голосов
/ 21 октября 2011

Сортировка по многозначным полям не работает нормально с Solr.

Документация

Сортировка может быть выполнена по «счету» документа или по любому многозначному значению = «false».Поле indexed = true при условии, что это поле не является токенизированным (т. е. не имеет анализатора) или использует анализатор, который выдает только один термин (т. е. использует KeywordTokenizer)

Когда выХотите отсортировать товары по низким или высоким ценам, по какой цене выберет Solr?Как в примере, у вас цена продажи равна 0, а также 195?

Запросы функций также не позволяют использовать max или min для многозначных полей.

Возможность сохранить максимальную и минимальную цену продажи в виде однозначных полей и использовать эти поля для сортировки.

highest_sell_price=195
lowest_sell_price=0

и использовать эти поля для сортировки.

...