MongoEngine – 文本搜索

MongoEngine – 文本搜索

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

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

在下面的例子中,我们首先定义了一个名为lang的文档类,它有两个字符串字段,即语言的名称和它的特征。我们还在这两个字段上创建了具有各自权重的索引。

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++”)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程