2017-03-23 27 views
1

我们的使用案例如下如何在多个标准中搜索塔兰特空间

我们将从源文件中获取文章。
每篇文章都有一定的元数据。元数据有一个字段类别,它是文章可能涉及的类别名称(手机,笔记本电脑等)的列表。类似地,元数据有一个关键字字段,其中包含关键字列表,文章可能会掉进。

下面是查询的,我们可能需要

一)获取的所有文章对于给定的类别和来自某个源,location.Source和位置是文章的元数据字段。
b)获取给定类别,来源,位置的所有文章。 c)获取给定类别,位置的所有文章。
d)获取给定关键字,类别,位置的所有文章。

下面是我们如何在越来越每篇文章设计spaces.So,我们插入文章分为文章空间,并在此基础上类别和本文属于关键字也会插入category_articles和keyword_articles空间。

下面是关于如何有效地为给定查询模式创建二级索引的几个查询。

a)对于辅助键{类别,来源,位置},如果我们错过了输入值中的某些部分,那么如果其他部分的键相同,那么这些行是否匹配? https://tarantool.org/doc/singlehtml.html#lua-data.index_object.parts
我知道我们不能在输入中指定第一和第三部分,即密钥的{'category','location'}?或者打哆嗦,我们没有第二的位置。

b)我们能否以更好的方式对模式进行建模,以便高效地查询给定的模式。

文章

urlhash
标题
内容
网址
日期

主键:{} urlhash

-
category_articles

ID
类别

位置
{urlhash,..}

主键:{ID}
二级密钥:{类别,来源,所在地}

-
keyword_articles

ID
关键字
类别

位置
{urlhash,..}

主键:{ID}
二级密钥:{关键字,类别,来源,所在地}

更新:
查询:
box.space.category_articles.index.secondary_key:选择{ 'bollywoord',零, '印度'}
输出继电器:

[1, 'bollywoord', 'HT', '印度',[ 'URL1', 'URL2']]
[3,“bollywoord ','ht','我们',['url3','url4']]

回答

2

您需要包含您要用于搜索索引的所有字段。您可以定义多个二级索引。例如。您可以在关键字,类别,来源以及位置,类别,来源中定义一个索引。除了主键以外,这些都是很好的组合。 除非您在其上创建索引,否则您无法在任意字段组合中搜索Tarantool。

+0

Thanks.This看起来比一些hackish解决方案更好。 – crackerplace