得意犹堪夸世俗,诏黄新湿字如鸦。这篇文章主要讲述如何在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());
}
}
});
【如何在android中解析查询搜索案例不敏感()】提前致谢。
答案我解决了不区分大小写的字符串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事件在对象上保存可搜索字段(即较低的名称)。
推荐阅读
- SpringMVC配置applicationContext.xml应该导入some-servlet.xml
- google drive Oauth 2.0 for java web application
- 在C#中的AdjustFileBeforeAppend方法中获取log4net config的自定义xml节点值
- 如何在Android上使用Weka的机器学习模型来预测新值()
- IntelliJ 9和Android - 过滤LogCat
- 在intellij上无法启动android
- approx_fprime - ValueError(使用序列设置数组元素)
- Android Studio 1.0.1在很多地方显示了奇怪的文字(发现(Darcula主题中的bug))
- 如何为开发人员进行设计