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 中的响应编写器将您的响应更改为任何自定义格式。
我正在进行简单的分面搜索:
/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 中的响应编写器将您的响应更改为任何自定义格式。