Solr faceting:JSON格式不一致

时间:2012-12-16 08:28:06

标签: solr lucene facet

我的solr架构中有以下两个字段:

<field name="brand_id"     type="string" indexed="true" stored="true" />
<field name="category_id"  type="string" indexed="true" stored="true" />

当我启用facet请求时(face_id上​​的faceting) http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=brand_id&q= *:*

faceting输出以对象表示法返回:

"facet_counts": {
    "facet_queries": { }
    "facet_fields": {
         "brand_id": [
            {"1350492":14},
            {"1350578":12},
            {"1350600":11},
            {"1350617":8}
        ]
    }
}

但是,使用'category_id'作为facet字段重复相同的请求会返回数组表示法 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>

3 个答案:

答案 0 :(得分:9)

正如Bill Dueber所提到的,您可以使用json.nl参数格式化JSON输出。查看此页面https://wiki.apache.org/solr/SolJSON#JSON_specific_parameters

答案 1 :(得分:0)

我曾经经历过类似的事情。

尝试将标记multiValued = false添加到字段的定义中。我记得为我修好了。

你可能需要重新索引。

答案 2 :(得分:0)

如果您正在使用JSON响应编写器,则可以将json.nl参数添加到查询字符串以格式化构面计数。

json.nl=arrmap格式为[{"facetValue1": facetCount1}, {"facetValue2": facetCount2}]

json.nl=map格式为{"facetValue1": facetCount1, "facetValue2": facetCount2}

响应编写者的文档,特别是json.nl(nl =命名列表)可以在这里找到:https://cwiki.apache.org/confluence/display/solr/Response+Writers#ResponseWriters-JSON-SpecificParameters