MongoEngine поисковый индекс
Я пытаюсь реализовать механизм поиска с обратным индексом с MongoDb (MongoEngine), где терминам в сообщениях присваиваются веса, а затем они используются в качестве встроенных документов, например:
class Term(db.EmbeddedDocument):
t = db.StringField()
weight = db.FloatField()
class Post(db.Document):
terms = db.ListField(db.EmbeddedDocumentField(Term))
Затем, учитывая термин, я могу найти сообщения, которые содержат термин, используя этот запрос:
post_list = Post.objects(terms__t=term)
Тем не менее, это возвращает список сообщений, но как я могу найти вес термина для каждого возвращенного сообщения без необходимости перебирать список встроенных терминов в поисках термина? Есть ли способ запросить посты, чтобы автоматически возвращать вес для любых возвращаемых постов?
Также был бы признателен, если у кого-нибудь есть лучшие методы для реализации поисковой системы в MongoDB?
Спасибо!
1 ответ
MongoDB поддерживает базовый текстовый индекс, см.: http://docs.mongodb.org/manual/core/index-text/ Это лучший способ хранения и поиска по документам, особенно если вы хотите получить оценку за совпадение.
Вам придется вызывать команду вручную, поскольку в настоящее время она не реализована в MongoEngine.