我有一个mongoengine文档,需要进行文本字段搜索然后进行排序。我设法创建了文本索引,但排序操作的速度非常慢。我需要一个建议如何完整索引我的查询:
class MyDoc(Document):
meta = {
'collection': 'my_doc',
'index_background': True,
'indexes': [
'-sort_field',
{
'fields': ['$text_field'],
'default_language': 'portuguese',
}
],
}
text_field = StringField()
sort_field = DateTimeField()
MyDoc.objects.search_text('some text').sort(['-sort_field'])
答案 0 :(得分:1)
您不能将文本索引与另一个索引一起用于排序。您可以使用{ "field" : 1, "t" : "text" }
之类的复合索引,并在field
和文本搜索上使用索引进行相等匹配,但是否则文本索引不能作为复合索引的一部分。为什么要进行文本搜索然后对另一个字段进行排序?这是一个稍微不寻常的用例。返回少量文档应该没问题,例如返回按日期排序的匹配结果页面。