Обработка данных facet.pivot в Solr/Python
Я запрашиваю ядро Solr с этим URL:
select?q=*:*&rows=0&facet=on&facet.limit=-1&facet.mincount=0&facet.pivot=brand,series,sub_series
Использование функции Facet Pivot
Частичный ответ JSON, обратите внимание на правильное вложение полей:
"facet_pivot":{
"brand,series,sub_series":[{
"field":"brand",
"value":"A. Lange & Sohne",
"count":69,
"pivot":[{
"field":"series",
"value":"1815 Manual Wind",
"count":1},
{
"field":"series",
"value":"1815 Up Down",
"count":1},
{
"field":"series",
"value":"Datograph",
"count":3,
"pivot":[{
"field":"sub_series",
"value":"Perpetual",
"count":2},
{
"field":"sub_series",
"value":"Up Down",
"count":1}]},
Теперь я повторяю тот же запрос с pySolr:
def nested_navbar():
result = solr.search('*:*', **{
'rows': '0',
'facet': 'on',
'facet.limit': '-1',
'facet.mincount': '0',
'facet.pivot': ['brand_exact', 'series_exact', 'sub_series_exact']
})
result = result.facets['facet_pivot']
return result
По какой-то причине, когда я печатаю данные (шаблоны pdb или Django), словарь в результате имеет 3 разных массива для брендов, серий и под_серий, без первоначальной вложенности. Другими словами, поле опоры исчезло.
1 ответ
Решение
По MatsLindh, я настроил ведение журнала для pySolr:
- добавлять
export DEBUG_PYSOLR='true'
до терминала. - Запустите сервер и проверьте журнал.
Вот ссылка, сгенерированная pySolr:
/?q=%2A%3A%2A&rows=0&facet=on&facet.limit=-1&facet.mincount=0&facet.pivot=brand&facet.pivot=series&facet.pivot=sub_series&wt=json
Проблема в том, что pySolr создавал новый facet.pivot
поле для каждого элемента в массиве ("brand", "series" и "sub_series").
Мой новый код, который решает проблему и генерирует единый facet.pivot
поле:
'facet.pivot': 'brand,series,sub_series'