2015-05-29 1 views
0

У меня есть приложение, в котором у меня есть пользователи с именем пользователя и местом для их настоящего имени. Я также разрешаю пользователям запрашивать других пользователей. В настоящее время мой запрос выглядит следующим образом:Поиск в Parse.com без регулярного выражения

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 использует regex, поэтому, если у меня есть много пользователей, которые ищут одновременно, я быстро запускаю 80 запросов регулярных выражений/мин в синтаксическом анализе. Использование hasPrefix: также использует regex. Единственный вопрос, о котором я могу думать, это использовать метод equalTo:, но это будет означать, что пользователь должен точно знать, кого он ищет, и как записать свои имена (как пользовательские, так и реальные).

Любые предложения?

+0

вот почему я отошел от Парса - я закончил тем, что тратил много времени на кодирование вокруг пределов Парса. – CharlesA

ответ

0

Мое окончательное решение этой проблемы состояло в том, чтобы создать отдельное поле, назовите его mixed_names. Это поле представляет собой конкатенацию реальных и пользовательских имен (все строчные буквы). Затем я могу сделать один вызов regex и получить те же результаты. Если вы не удаляете все вызовы регулярных выражений, это происходит от 4 вызовов до 1.

 Смежные вопросы

  • Нет связанных вопросов^_^