我们的用例如下
我们将从来源获取文章。
每篇文章都有一定的元数据。元数据有一个字段类别,它是文章可能属于的类别名称(手机、笔记本电脑等)的列表。类似地,元数据有一个关键字字段,其中包含文章可能属于的关键字列表.
以下是我们可能需要的查询
a)获取给定类别的所有文章,并且来自某个来源,位置。来源和位置是文章的元数据字段。
b) 获取给定类别、来源、位置的所有文章。c) 获取给定类别、位置的所有文章。
d) 获取给定关键字、类别、位置的所有文章。
下面是我们如何设计空间。因此,在获取每篇文章后,我们将文章插入文章空间,并根据该文章所属的类别和关键字插入到 category_articles 和 keyword_articles 空间。
以下是我对如何有效地为给定查询模式创建二级索引的几个查询。
a) 对于二级键 {category,source,location},如果我们错过了输入值中的某些部分,那么如果 key 的其他部分相等,行会匹配吗?https://tarantool.org/doc/singlehtml.html#lua-data.index_object.parts
我知道我们不能在输入中指定第一和第三部分,即{'category','location'}作为键?或者我们在第二个位置有一个零。
b)我们能否以更好的方式对模式进行建模,以便有效地查询给定的模式。
文章
urlhash
标题
内容
url
日期
主键:{urlhash}
--
category_articles
id
类别
源
位置
{urlhash,..}
主键:{id}
辅助键:{类别、来源、位置}
--keyword_articles _
id
关键字
类别
源
位置
{urlhash,..}
主键:{id}
辅助键:{关键字、类别、来源、位置}
更新:
查询:
box.space.category_articles.index.secondary_key:select{'bollywood',nil,'india'}
输出:
[1, '宝莱坞', 'ht', '印度', ['url1', 'url2']]
[3, '宝莱坞', 'ht', '我们', ['url3', 'url4']]