【发布时间】:2012-04-21 04:53:06
【问题描述】:
假设我的 couchdb 文档看起来像这样:
{
"_id": "id",
"_rev": "rev",
"title": "foobar",
"URI": "http://www.foobar.com",
"notes": "",
"date": 1334177254774,
"tags": [
"tag1",
"tag2",
"tag3"
],
"date_modified": 1334177278457,
"deleted": false
}
我想要的是从标签创建一个倒排索引,所以我最终得到了类似的东西:
{
"tag1": [
_id,
_id,
_id
],
"tag2": [
_id,
_id,
...
]
}
根据我的阅读和尝试,couchdb 可能不会让我这样做。我无法在地图阶段完成它,而且我似乎无法在沙发缩减阶段完成它。 这是我需要在应用程序的另一层完成的事情吗?
【问题讨论】:
-
你试过什么?似乎对于 map 阶段,您将对标签执行 for 循环,然后为每个标签执行
emit(tag, _id)。然后,在 reduce 中,您会将键值对与相同的键组合起来。我还没试过。 -
@MatthewFlaschen,你不能在reduce中组合键值对,因为无法预测结果的大小。归约函数,必须严格将输入归约为一个较小且最大尺寸固定的值。
标签: indexing couchdb inverted-index