Solr 刻面:不一致的 JSON 格式
Posted
技术标签:
【中文标题】Solr 刻面:不一致的 JSON 格式【英文标题】:Solr faceting: Inconsistent JSON formatting 【发布时间】:2012-12-03 16:43:20 【问题描述】:我的 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=* :*
faceting 输出以对象表示法返回:
"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>
【问题讨论】:
将 wt 从 json 更改为 xml 时的输出是什么? @pensz XML 返回正确的结构(我更新了问题)。 您确定您没有将 json.nl=map 添加到第一个查询而不是第二个吗? @BillDueber 这两个都没有设置。但是知道这个参数存在回答了我的问题。谢谢。 【参考方案1】:如果您使用 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
【讨论】:
谢谢,我遇到了类似的问题。 json.nl 工作【参考方案2】:不久前我也经历过类似的事情。
尝试将标签 multiValued=false 添加到字段的定义中。我记得为我修好了。
你可能需要重新索引。
【讨论】:
【参考方案3】:正如 Bill Dueber 所提到的,您可以使用 json.nl 参数格式化 JSON 输出。查看此页面,https://wiki.apache.org/solr/SolJSON#JSON_specific_parameters
【讨论】:
查看JSON Specific Parameters以上是关于Solr 刻面:不一致的 JSON 格式的主要内容,如果未能解决你的问题,请参考以下文章