我正在尝试使用某种形式的全文搜索功能来搜索我的mongodb集合(la flowdock)。 我为每个文档创建一个_keywords条目,并使用该文档中其他字段的小写字母填充它。然后我像这样搜索它(前缀搜索)ex。搜索字符串=“车”mongodb全文搜索建议多个词
found_shots = connection.Shot.find({'_keywords': re.compile('^%s' % searchString.lower())}).limit(limit).skip(skip)
问题是,当我尝试在多个单词搜索(例如,搜索字符串= [“汽车”,“在线”]
regex1 = re.compile('^%s' % searchStrings[0].lower())
regex2 = re.compile('^%s' % searchStrings[1].lower())
found_shots = connection.Shot.find({'$and':[{'_keywords':regex1},{'_keywords':regex2}]}).limit(limit).skip(skip)
这是行不通的。任何的想法,请?
你运行的是哪个版本的mongo,因为$并且只有1.9.x或更高版本 – Sammaye
@Sammaye:1.8.2你说得对。我的印象是,我将它更新到2.0进行测试,但我没有。我的错。我的代码是否适用于2.0?这是做这件事的好方法吗?坏?除了运行2个不同的查询并在Python中对它们进行逻辑运算外,还有其他的方法吗 – pocorschi
应该这样做,正则表达式对象可能不会,而只是用标准的//字符串替换它,如果不是,则返回 – Sammaye