gpt4 book ai didi

tagging - 在RethinkDB中使用多标签索引,如何获取匹配多个标签的项目?

转载 作者:行者123 更新时间:2023-12-01 23:50:55 27 4
gpt4 key购买 nike

假设我有一个故事表(带有示例数据):

 story
{id: 1, name: 'First Story', tags: ['plants', 'flowers', 'dog']}
{id: 2, name: 'Second Story', tags: ['flowers', 'wedding']}
{id: 3, name: 'Third Story', tags: ['plants', 'wedding']}

故事表在 tags 字段上有一个多索引。

我可以通过以下方式获取所有具有 plants 标签的故事:

 r.table('story').getAll('plants', {index: tags})

现在我如何以有效的方式获取所有包含 plantswedding 标签的故事(希望利用标签多索引)?

用例需要用户可选择过滤任意数量的任意标签。

最佳答案

将多个参数传递给 getAll 查找与任一标记匹配的文档:

r.table('story').getAll('plants', 'wedding', {index: 'tags'})

标签上的简单多索引不能用于匹配所有标签。不使用索引的查询如下所示:

r.table('story').filter(r.row('tags').contains('plants','wedding'))

也许可以在标签的幂集上创建和使用多重索引:

r.table('story').indexCreate('tags-powerset', r.row('tags').do(powerset), {multi:true})
r.table('story').getAll(['plants', 'wedding'], {index: 'tags'})

由于ReQL的限制,为了提高效率,可能需要对powerset函数进行近似,例如:

function(tags) {
return tags.concatMap(function(a){
tags.map(function(b){
return [a,b] })})}

关于tagging - 在RethinkDB中使用多标签索引,如何获取匹配多个标签的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26561755/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com