0

在带有 Parse DB 后端的 iPhone 应用程序上工作我正在尝试使用 search tokens实现搜索功能。我阅读了 Parse 关于可扩展搜索、关系与指针、文档、各种 SO / Parse.com 讨论等的白皮书 - 不幸的是,找不到与我的问题有任何相似之处。

我正在使用一个类SearchToken,我在其中存储唯一的已清理标记,并且我有一个PFRelation *tokenRelation相关类Article每篇文章都可以有多个搜索标记;每个标记都可以与多篇文章相关)。

我正在尝试形成一个查询,从Article包含所有搜索标记(例如@"token1", @"token2")的类中查找所有对象。不幸的是whereKey:containsAllObjectsInArray:,它不适PFRelation用于使我的事情进一步复杂化的属性。

一个简单的选择是将该PFRelation属性转换为一个指针数组,但我知道相关标记的数量可能会超过到处提到的 100 个对象的限制,所以我在这里有点犹豫。

我的问题是:是否有任何其他方法可以查询与相关对象中的所有条件匹配的对象(通过PFRelation),或者是否有更好的方法来实现标记化搜索功能?

4

1 回答 1

0

我会使用指针数组,因为我假设可以在一篇文章上设置最大数量的标记。(AFAIK 限制是 1k Parse Docs) Parse 说如果你知道最大数量(例如邮政编码)是有意义的。请参阅解析中的关系

如果指针数组对您来说不是一个可能的解决方案,我会用您自己的类(例如 HasToken 或 TokenRelationship)而不是 PFRelation(或指针数组)来解决 n:m 关系。

@interface TokenRelationship : PFObject <PFSubclassing>
@property (nonatomic, strong) Article article;
@property (nonatomic, strong) SearchToken searchToken;
@end

然后使用子查询对 TokenRelationship 执行查询whereKey:matchesQuery:

不过,您可以达到 1k 的限制。所以这两种解决方案都有其局限性。我希望 parse 引入对外键指针的 where-key 约束,例如:whereKey:@"searchToken.tokenString" equalTo:@"token1"或者它们取消子/内部查询的 1k 限制。否则 n:m 关系查询可能会超出限制。

于 2015-07-07T22:16:49.123 回答