【发布时间】:2015-05-29 15:44:13
【问题描述】:
我有一个应用程序,其中有用户名和真实姓名。我还允许用户查询以查找其他用户。目前我的查询如下所示:
PFQuery *userQuery = [PFUser query];
[userQuery whereKey:kCPUserName containsString:[searchText lowercaseString]];
PFQuery *userRealNameQuery = [PFUser query];
[usernameQuery whereKey:kCPUserFullName containsString: searchText];
PFQuery *userRealNameWithCapsQuery = [PFUser query];
[userRealNameWithCapsQuery whereKey:kCPUserFullName containsString:[searchText capitalizedString]];
PFQuery *userRealNameWithLowerQuery = [PFUser query];
[userRealNameWithLowerQuery whereKey:kCPUserFullName containsString:[searchText lowercaseString]];
PFQuery *finalQuery = [PFQuery orQueryWithSubqueries:@[userQuery, userRealNameQuery, userRealNameWithCapsQuery, userRealNameWithLowerQuery]];
这很好用,返回一个可能与 searchText 匹配的用户列表。但是,我已经意识到 containsString 使用正则表达式,因此如果我有很多用户同时搜索,我很快就会遇到 80 正则表达式查询/分钟解析的限制。使用 hasPrefix: 也使用正则表达式。我能想到的唯一查询是使用 equalTo: 方法,但这意味着用户必须确切知道他们在寻找谁以及如何拼写他们的名字(用户或真实) .
有什么建议吗?
【问题讨论】:
-
这就是我离开 Parse 的原因 - 我最终花了很多时间在 Parse 的限制范围内进行编码。
标签: ios objective-c regex parse-platform pfquery