【问题标题】:Parse.com user search without regexParse.com 用户搜索没有正则表达式
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2023-04-10
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多