我想做一个单词边界搜索。例如,假设您有以下条目:
并搜索包含“库克”作为一个整体的条目。也就是说,只应返回第3、第4和第5个条目。在
在本例中,当我使用\b
单词边界语句时,由于自动转义,它会以某种方式失真。在
import re, pymongo
# prepare pymongo
collection.find({"entry": re.compile('\bcook\b').pattern})
当我打印查询字典时,\b
变成{
我的问题是如何使用PyMongo进行单词边界搜索?我可以在mongodbshell中做到这一点,但在PyMongo失败了。在
所有这些测试用例都由Python中的一个简单的重新表达式来处理。示例:
不要使用生成
pattern
对象的pattern
属性,而是使用regex模式对象。在这需要一个“全文搜索”索引来匹配所有案例。简单的正则表达式是不够的。在
例如,您需要英语词干来查找“cook”和“cooks”。正则表达式匹配空格或单词边界之间的整个字符串“cook”,而不是“cooks”或“cooking”。在
有许多“全文搜索”索引引擎。研究他们决定使用哪一个。 -弹性搜索 -鲁辛 -斯芬克斯
我想PyMongo连接到MongoDB。最新版本有内置的全文索引。见下文。在
mongdb3.0有以下索引:https://docs.mongodb.org/manual/core/index-text/
相关问题 更多 >
编程相关推荐