我有一个充满用户及其信息的数据库,我使用parse.com搜索它们。
现在,为了使搜索更好一点,并使用大写,重音符号等灵活,我有一个名为search_helper的列,当用户注册或更新他的信息时会填充,如下所示:
String fullNameNormalized = Normalizer.normalize(inputFirstName.getText() + " " + inputFirstSurname.getText() + " " + inputSecondSurname.getText(), Normalizer.Form.NFD);
fullNameNormalized = fullNameNormalized.replaceAll("[^\\p{ASCII}]", "");
fullNameNormalized = fullNameNormalized.toLowerCase();
String searchHelper = fullNameNormalized + " " + email + " " + phone;
所以它基本上是一个较长的字符串,包含小写的所有用户信息,因此当我进行查询时,它看起来像这样:
String searchParams = searchText.getText().toString().toLowerCase().trim();
ParseQuery<ParseUser> newSearch = ParseUser.getQuery();
newSearch.whereContains("search_helper", searchParams);
这在大多数情况下都有效。例如,如果我尝试搜索“john sanchez smith”,它将正确地返回“JohnSánchezSmith”作为搜索结果。但是,如果我搜索“john smith”,它将找不到他,因为该列不完全按照该顺序包含它。有谁知道这个的解决方法?
感谢您的时间
答案 0 :(得分:0)
无法搜索&#34; john smith&#34;,因为包含意味着只能搜索一个字符串的一部分,这必须在一起。对不起,我很抱歉。