Есть ли способ реализовать настраиваемую (кроме индекса / счетчика) сортировку значений фасетов в solr?
Предположим, что мы ищем с помощью iphone, и в аспекте бренда мы получаем следующие аспекты: 1)Amzer 2)Apple 3)Araree 4)Casemate 5)DailyObjects
Он основан на алфавитном порядке. Но мы хотим отсортировать фасетные значения на основе индивидуальной оценки каждого бренда. Есть ли какая-либо особенность, доступная в фасовке solr, которая будет соответствовать вышеуказанному требованию?
Если у нас есть счет по отношению к значениям каждого аспекта бренда, то есть ли способ выполнить аспект в конце Solr?
В настоящее время у solr есть только две опции facet.sort, то есть index и count. Мы хотим включить другой вариант сортировки, кроме индекса и количества. Пожалуйста, предложите.
1 ответ
Поскольку вы говорите об агрегации поля, вы можете сделать это с помощью Facet JSON API:
Данный пример делает то, о чем вы спрашиваете:
{
categories:{
type : terms // terms facet creates a bucket for each indexed term in the field
field : cat,
sort : "x desc", // can also use sort:{x:desc}
facet : {
x : "avg(price)", // x = average price for each facet bucket
y : "max(popularity)" // y = max popularity value in each facet bucket
}
}
}
Это суммирует среднюю цену всех элементов в фасете, а также сортирует по ней - сначала вы получаете категории с самой высокой средней ценой.
Список поддерживаемых функций, которые вы можете использовать для агрегирования под фасетами, доступен в справочном руководстве:
- сумма, сумма (продажи), суммирование числовых значений
- avg, avg (популярность), среднее числовых значений
- мин, мин (зарплата), минимальное значение
- max, max(mul(цена, популярность)), максимальное значение
- уникальный, уникальный (автор), количество уникальных значений
- hll, hll (автор), распределенная оценка мощности с помощью алгоритма hyper-log-log
- процентиль, процентиль (оклад,50,75,99,99,9), процентильные оценки с помощью алгоритма t-digest. При сортировке по этой метрике в качестве значения сортировки используется первый перечисленный процентиль.
- сумма, сумма (аренда), сумма квадратов поля или функции
- дисперсия, вариация (аренда), дисперсия числового поля или функции
- стандартное отклонение поля или функции