繁体   English   中英

不使用正则表达式的Parse.com用户搜索

[英]Parse.com user search without regex

我有一个应用,其中有用户,用户名和真实姓名都可以。 我还允许用户查询以查找其他用户。 目前,我的查询如下所示:

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:方法,但这意味着用户必须确切知道他们要查找的人以及如何拼写他们的名字(用户名或真实名)。

有什么建议么?

我对此问题的最终解决方案是创建一个单独的字段,将其称为Combined_names。 此字段是真实名称和用户名(全部为小写)的串联。 然后,我可以对此进行单个正则表达式调用,并获得相同的结果。 虽然不删除所有正则表达式调用,但它从4个调用变为1个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM