您好我正在尝试创建一个电影应用,我试图让搜索功能正常工作。然而,我遇到了一个问题,试图找出一种方法来使搜索案例不敏感,并忽略标点符号。我相信另一篇文章展示了如何通过使用正则表达式
来使案例对工作不敏感query.whereMatches("name", "("+searchData+")", "i");
然而,我可以做些什么来忽略标点符号?
例如在数据库中我有" Mission:Impossible"。如果用户搜索"不可能的任务"它仍然无法找到它。
答案 0 :(得分:0)
搜索稍微转换的属性的一种好方法是在保存时进行转换,然后对转换后的属性使用更简单(更快)的查询匹配。对于这个问题,转换是一个不区分大小写,无标点符号的属性版本。
Parse.Cloud.beforeSave("MyClass", function(request, response) {
var name = request.object.get("name");
var searchName = name.replace(/['";:,.\/?\\-]/g, '').toLowerCase();
request.object.set("searchName", searchName);
response.success();
});
现在,可以在" searchName"上以最大的简单性和速度(因为它已编入索引)进行不区分大小写,无标点搜索。属性。