2016-03-07 43 views
1

我在我的iOS应用程序中使用Yapdatabase作为存储引擎,并且我需要一个表示对象的同一属性的多个值的索引。单个Yapdatabase行的多个索引条目

示例:我在我的Yapdatabase中存储汽车对象。我的大多数汽车物品都有多种颜色,但我想要高效地检索所有黄色汽车。

我对YapDatabaseSecondaryIndexes有点熟悉,但我无法将其应用到我的场景中。

我该如何有效检索黄色汽车?

回答

1

有几个选项。如果你只处理少量的颜色,那么你仍然可以使用YapDatabaseSecondaryIndex。您可以配置您的索引以包含每种颜色的字段。

YapDatabaseSecondaryIndexSetup *setup = [[YapDatabaseSecondaryIndexSetup alloc] init]; 
[setup addColumn:@"red" withType:YapDatabaseSecondaryIndexTypeInteger]; 
[setup addColumn:@"blue" withType:YapDatabaseSecondaryIndexTypeInteger]; 
... 

然后,每辆车只需设置每个颜色的“标志”。

如果您正在处理很多不同的颜色,那么改为使用FullTextSearch扩展可能更有效。基本上,您将为包含所有颜色的每辆车创建一个字符串,并将该字符串交给FullTextSearch扩展。然后,您可以简单地为包含“黄色”的汽车发出查询。

+0

我的“色彩池大小”在index-setup-time时是未知的,但全文搜索表现出色。谢谢! – stoffen