如何在android中解析查询搜索案例不敏感?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在android中解析查询搜索案例不敏感?相关的知识,希望对你有一定的参考价值。
我使用解析云来存储数据。在这种情况下,我在此表中有一个表“MyUser”我希望在不区分大小写的情况下按名称搜索用户。
搜索工作正常,但搜索操作不区分大小写
我必须搜索不区分大小写
这是我的代码。:-
ParseQuery<ParseObject> query = ParseQuery.getQuery("BetsUpUser");
query.whereContains("name", searchData);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objList,ParseException e) {
if (e == null) {
Log.d("score","@@@@Retrieved " + objList.size()+ " scores");
} else {
Log.d("score", "@@@Error: " + e.getMessage());
}
}
});
提前致谢。
答案
我解决了不区分大小写的字符串Parse Query的问题
替换线
query.whereContains("name", searchData);
同
query.whereMatches("name", "("+searchData+")", "i");
另一答案
我也遇到了这个问题,并意识到没有太多方法可以做到这一点。来自@ardrian的Another interesting approach使用javascript
。对于Java
来说几乎是一样的。他建议使用可搜索的小写版本再创建一个字段。它看起来如下:
ParseObject gameScore = new ParseObject("BetsUpUser");
gameScore.put("name", name);
gameScore.put("name_lowercase", name.toLowerCase());
gameScore.saveInBackground();
在搜索时我们将输入文本转换为小写。这样我们仍然可以使用whereContains()
方法,它不会对我们产生太大影响。
ParseQuery<ParseObject> query = ParseQuery.getQuery("BetsUpUser");
query.whereContains("name_lowercase", searchData.toLowerCase()); // the only one change
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objList,ParseException e) {
if (e == null) {
Log.d("ParseQuery", objList.get(0).get("name"));//name in actual case
} else {
Log.d("ParseQuery", e.getMessage());
}
}
});
另一答案
请参阅Parse博客上关于实施可扩展搜索的这篇文章。
http://blog.parse.com/2013/03/19/implementing-scalable-search-on-a-nosql-backend/
基本上,您可以使用afterSave事件在对象上保存可搜索字段(即较低的名称)。
以上是关于如何在android中解析查询搜索案例不敏感?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Dictionary中通过大小写不敏感的密钥获取原始案例密钥