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)

上面程式碼的輸出將是其描述中出現單詞“oriented”的語言的名稱(本例中是“Python 和“C++”)。

廣告
© . All rights reserved.