json 中的 Solr facet 字段结果显示为逗号分隔列表而不是字典

Solr facet field results in json are appearing as comma separated list rather than dictionary

我正在进行简单的分面搜索:

/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=fruit

使用 Solr 5.0.0 lucene。

找到了正确的值,但是 json 格式没有意义。 "fruit" 的值显示在以逗号分隔的列表中,我希望它们出现在字典中。

在 json 中,我看到以下内容:

{
    "responseHeader": {
        "status": 0,
        "QTime": 3,
        "params": {
            "q": "*:*",
            "facet.field": "fruit",
            "indent": "true",
            "rows": "0",
            "wt": "json",
            "facet": "true"
        }
    },
    "response": {
        "numFound": 360,
        "start": 0,
        "docs": []
    },
    "facet_counts": {
        "facet_queries": {},
        "facet_fields": {
            "fruit": [
                "apple", 200,
                "banana", 34,
                "orange", 126]
        },
        "facet_dates": {},
        "facet_ranges": {},
        "facet_intervals": {}
    }
}

xml 中的相同搜索显示如下:

<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">5</int>
        <lst name="params">
            <str name="q">*:*</str>
            <str name="facet.field">fruit</str>
            <str name="indent">true</str>
            <str name="rows">0</str>
            <str name="wt">xml</str>
            <str name="facet">true</str>
        </lst>
    </lst>
    <result name="response" numFound="360" start="0"> </result>
    <lst name="facet_counts">
        <lst name="facet_queries"/>
        <lst name="facet_fields">
            <lst name="fruit">
                <int name="apple">200</int>
                <int name="banana">34</int>
                <int name="orange">126</int>
            </lst>
        </lst>
        <lst name="facet_dates"/>
        <lst name="facet_ranges"/>
        <lst name="facet_intervals"/>
    </lst>
</response>

我希望 json 分面数显示如下:

"fruit": [
    "apple": 200,
    "banana": 34,
    "orange": 126]

我以前从未在其他方面搜索中遇到过这种情况,这是否是由架构中的某些内容引起的?

这里有两个满足您要求的解决方案。

1.使用最新的或 7.x 及更高版本的 Solr,这样您就可以轻松获得它,如下面的解释

先参考thislink

您可以通过使用 json 方面查询来实现您的输出。

而不是这个

/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=fruit

请尝试以下查询。

/select?q=*:*&rows=0&wt=json&indent=true&facet=true&json.facet={fruits:{type:terms, field:fruit}}

更多切面查询知识请参考this文章

2。回复作者

这里我不确定 Solr 5.0.0 是否支持它。

参考 this 了解更多关于回复作者的信息。

您可以使用 solr 中的响应编写器将您的响应更改为任何自定义格式。