使用Parse DB后端处理iPhone应用程序我尝试使用搜索令牌来实现搜索功能。我阅读了Parse关于可扩展搜索,关系与指针,文档,各种SO / Parse.com讨论等的白皮书。 - 遗憾的是,我找不到与我的问题有任何相似之处。
我正在使用课程SearchToken
我存储了唯一已清理的令牌,我在相关课程PFRelation *tokenRelation
中有一个Article
(每篇文章都可以有多个搜索令牌;每个令牌都可以与多篇文章相关)。
我试图形成一个查询,查找包含所有搜索令牌的Article
类中的所有对象(例如@"token1", @"token2"
)。很遗憾whereKey:containsAllObjectsInArray:
不会处理PFRelation
属性,这会让我感到更加复杂。
一个简单的选择是将PFRelation
属性转换为指针数组,但我知道相关令牌的数量可以超过任何地方提到的100个对象的限制,所以我在这里有点犹豫。
我的问题是:有没有其他方法可以查询匹配相关对象中所有条件的对象(通过PFRelation
),还是有更好的方法来实现标记化搜索功能?
答案 0 :(得分:0)
我使用指针数组,因为我假设可以在一篇文章上设置最大数量的令牌。 (AFAIK的限制是1k Parse Docs )Parse说如果你知道最大数量(例如邮政编码)就有意义了。见Relationships in parse
如果指针数组不适合您,我将解决与您自己的类(例如HasToken或TokenRelationship)的n:m关系,而不是PFRelation(或指针数组)。
@interface TokenRelationship : PFObject <PFSubclassing>
@property (nonatomic, strong) Article article;
@property (nonatomic, strong) SearchToken searchToken;
@end
然后使用whereKey:matchesQuery:
使用子查询对TokenRelationship执行查询。
然而,你可以达到1k的限制。所以两种解决方案都有其局限性我希望解析引入forein-key指针的where-key约束,例如:whereKey:@"searchToken.tokenString" equalTo:@"token1"
,或者它们消除了对子/内部查询的1k限制。否则n:m关系查询可能超出限制。