3

当您想要一次添加多个条目时,Apache SOLR 需要一种古怪的 JSON 格式。(http://wiki.apache.org/solr/UpdateJSON#Update_Commands——注意“添加”节点)

简而言之,我需要能够创建如下所示的 JSON:

{
   "key": "val 1",
   "key": "val 2"
}

在 PHP 中,您可以轻松地创建一个数组,但是这个 JSON 结构需要一个对象,该对象具有两个显式不在数组中的同名键。

4

2 回答 2

1

您将无法使用它来执行此操作,json_encode因为它不是有效的 JSON。(键空间冲突)

您将需要手动组装对象。

您可以考虑创建单个项目,然后使用implode(). 然后你可以预先和附加{and }

这对我来说实际上会感觉更干净,然后破解 PHP 以使 json 编码工作。

建议的替代方案

我是 PHP 和 Solr 的 Solarium Project 的忠实粉丝。

批量添加并很容易在这里查看:http ://wiki.solarium-project.org/index.php/V2:BufferedAdd_plugin

于 2012-10-25T18:57:20.823 回答
1

虽然json_encode不能直接这样做,但您可以解决它。试试这个:

$php_friendly_json = json_encode([
 "key1" => "val 1",
 "key2" => "val 2"
]);

$apache_weird_json = str_replace(["key1", "key2"], "key", $php_friendly_json);

当然,一定要选择key1key2,这样它们就不会出现在你的 JSON 值中!

于 2021-05-27T21:42:19.680 回答