2.9. Text Search¶
After MongoDB 2.4 version, supports search documents by text indexes.
2.9.1. Defining a Document with text index¶
Use the $ prefix to set a text index, Look the declaration:
class News(Document):
title = StringField()
content = StringField()
is_active = BooleanField()
meta = {'indexes': [
{'fields': ['$title', "$content"],
'default_language': 'english',
'weights': {'title': 10, 'content': 2}
}
]}
2.9.2. Querying¶
Saving a document:
News(title="Using mongodb text search",
content="Testing text search").save()
News(title="MongoEngine 0.9 released",
content="Various improvements").save()
Next, start a text search using QuerySet.search_text
method:
document = News.objects.search_text('testing').first()
document.title # may be: "Using mongodb text search"
document = News.objects.search_text('released').first()
document.title # may be: "MongoEngine 0.9 released"
2.9.3. Ordering by text score¶
objects = News.objects.search_text('mongo').order_by('$text_score')