Ответ 1
Как упоминал Билл Дьюбер, вы можете отформатировать вывод JSON с помощью параметра json.nl. Проверьте эту страницу, https://wiki.apache.org/solr/SolJSON#JSON_specific_parameters
У меня есть следующие два поля в моей схеме solr:
<field name="brand_id" type="string" indexed="true" stored="true" />
<field name="category_id" type="string" indexed="true" stored="true" />
Когда я делаю запрос с включенными грани (огранка на brand_id) http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=brand_id&q= *: *
выход огранки возвращается в нотации объекта:
"facet_counts": {
"facet_queries": { }
"facet_fields": {
"brand_id": [
{"1350492":14},
{"1350578":12},
{"1350600":11},
{"1350617":8}
]
}
}
Однако повторение одного и того же запроса с использованием "category_id" в качестве поля фасет возвращает нотацию массива http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=category_id&q= *: *
"facet_counts":{
"facet_queries":{},
"facet_fields":{
"category_id":[
"230",20,
"259",13,
"154",12,
"249",11
]
}
}
Есть ли способ принудительно форматировать нотацию объекта? Я использую Solr 3.6
- ОБНОВЛЕНИЕ -
Использование формата XML возвращает корректные результаты:
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="brand_id">
<int name="269115">136</int>
<int name="269394">110</int>
</lst>
<lst name="category_id">
<int name="1348814">228</int>
<int name="1350591">218</int>
</lst>
Как упоминал Билл Дьюбер, вы можете отформатировать вывод JSON с помощью параметра json.nl. Проверьте эту страницу, https://wiki.apache.org/solr/SolJSON#JSON_specific_parameters
Я испытал подобную вещь некоторое время назад.
попробуйте добавить тег multiValued = false в определение полей. Я помню, что исправил это для меня.
Возможно, вам придется переиндексировать.
Если вы используете автоответчик JSON, вы можете добавить параметр json.nl
в строку запроса для форматирования счетчиков граней.
json.nl=arrmap
будет отформатировать как [{"facetValue1": facetCount1}, {"facetValue2": facetCount2}]
.
json.nl=map
будет отформатировать как {"facetValue1": facetCount1, "facetValue2": facetCount2}
.
Документы для авторов ответов и, в частности, json.nl(nl = named lists) можно найти здесь: https://cwiki.apache.org/confluence/display/solr/Response+Writers#ResponseWriters-JSON-SpecificParameters