当您想要一次添加多个条目时,Apache SOLR 需要一种古怪的 JSON 格式。(http://wiki.apache.org/solr/UpdateJSON#Update_Commands——注意“添加”节点)
简而言之,我需要能够创建如下所示的 JSON:
{
"key": "val 1",
"key": "val 2"
}
在 PHP 中,您可以轻松地创建一个数组,但是这个 JSON 结构需要一个对象,该对象具有两个显式不在数组中的同名键。
当您想要一次添加多个条目时,Apache SOLR 需要一种古怪的 JSON 格式。(http://wiki.apache.org/solr/UpdateJSON#Update_Commands——注意“添加”节点)
简而言之,我需要能够创建如下所示的 JSON:
{
"key": "val 1",
"key": "val 2"
}
在 PHP 中,您可以轻松地创建一个数组,但是这个 JSON 结构需要一个对象,该对象具有两个显式不在数组中的同名键。
您将无法使用它来执行此操作,json_encode
因为它不是有效的 JSON。(键空间冲突)
您将需要手动组装对象。
您可以考虑创建单个项目,然后使用implode()
. 然后你可以预先和附加{
and }
。
这对我来说实际上会感觉更干净,然后破解 PHP 以使 json 编码工作。
建议的替代方案
我是 PHP 和 Solr 的 Solarium Project 的忠实粉丝。
批量添加并很容易在这里查看:http ://wiki.solarium-project.org/index.php/V2:BufferedAdd_plugin
虽然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 值中!