2017-03-23 25 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