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.

Другие вопросы по тегам