我正在使用ajax,servlet和mongodb实现自动完成功能。现在,我已经实现了一个似乎部分工作的逻辑
示例:
如果我有以下产品,请在数据库中
1. Xbox Amazon
2. Amazon xyz
当用户输入ama
时,结果应包含两个产品。但我只得到Amazon xyz
。
这是我用java编写的逻辑,
DBCollection products = db.getCollection("Products");
BasicDBObject dbObj = new BasicDBObject();
dbObj.put("modelName", Pattern.compile("^"+request.getParameter("startswith"),Pattern.CASE_INSENSITIVE));
DBCursor cursor = products.find(dbObj);
答案 0 :(得分:2)
您可以使用\b
(字边界)代替^
。
dbObj.put("modelName", Pattern.compile("\\b"+request.getParameter("startswith"),Pattern.CASE_INSENSITIVE));
这将允许您搜索不是start of the strings
的单词,也不会匹配包含ama
作为其一部分的字符串(例如:Obama
未返回)
答案 1 :(得分:0)
仅使用搜索字符串作为模式,在这种情况下它将起作用。您创建的模式不起作用的原因是^
表示字符串应该以以下模式开始。