当您想要一次添加多个条目时,Apache SOLR会调用奇怪的JSON格式。 (http://wiki.apache.org/solr/UpdateJSON#Update_Commands - 注意'添加'节点)
简而言之,我需要能够创建如下所示的JSON:
{
"key": "val 1",
"key": "val 2"
}
在PHP中,您可以轻松地创建一个数组,但是这个JSON结构需要一个对象,该对象具有两个明确不在数组中的相同名称的键。
答案 0 :(得分:1)
您无法使用json_encode
执行此操作,因为它不是有效的JSON。 (Keyspace碰撞)
您需要手动组装对象。
您可以考虑创建单个项目,然后使用implode()
。然后,您可以添加前缀{
和}
。
这对我来说实际上感觉更干净,然后破解PHP以使json编码工作。
建议的替代方案
我是PHP和Solr日光浴项目的忠实粉丝。
批量添加,非常简单,请点击此处:http://wiki.solarium-project.org/index.php/V2:BufferedAdd_plugin
答案 1 :(得分:0)
虽然 json_encode
不能直接做到这一点,但您可以解决它。试试这个:
$php_friendly_json = json_encode([
"key1" => "val 1",
"key2" => "val 2"
]);
$apache_weird_json = str_replace(["key1", "key2"], "key", $php_friendly_json);
当然,请务必选择 key1
和 key2
,以免它们出现在您的 JSON 值中!