MongoEngine 文本搜索


MongoDB 支持使用可以对字符串内容执行文本搜索的查询运算符。如前所述,用$ 符号设置索引的文本索引前缀名称。对于文本索引,索引字段的权重表示该字段相对于其他索引字段在文本搜索分数方面的重要性。你还可以在类的元字典中指定默认语言。

可以在以下位置找到支持的语言列表 https://docs.mongodb.com/manual/reference/text-search-languages/ MongoEngine API 包括 搜索文本() QuerySet 对象的方法。要在索引字段中搜索的字符串作为参数给出。

在下面的示例中,我们首先定义了一个名为 lang 的 Document 类,其中包含两个字符串字段、语言名称及其特征。我们还在具有各自权重的两个字段上创建索引。

from mongoengine import *
con=connect('newdb')

class lang (Document):
    name=StringField()
    features=StringField()
    meta = {'indexes': [
        {'fields': ['$name', "$features"],
            'default_language': 'english',
            'weights': {'name': 2, 'features': 10}
        }]
    }

l1=lang()
l1.name='C++'
l1.features='Object oriented language for OS development'
l1.save()
l2=lang()
l2.name='Python'
l2.features='dynamically typed and object oriented for data science, AI and ML'
l2.save()
l3=lang()
l3.name='HTML'
l3.features='scripting language for web page development'
l3.save()

为了执行单词‘oriented’的搜索,我们使用search_text()方法如下:

docs=lang.objects.search_text('oriented')
for doc in docs:
    print (doc.name)

上述代码的输出将是其描述中出现“面向”一词的语言名称(在本例中为“Python 和“C++”)。