我的目标是使用部分文本搜索在MongoDB中查询多个字段,并输出结果/ w加权匹配分数。
假设我有一个像这样的模型:
class Substance(db.Document):
name = db.StringField(required=True)
aka = db.ListField()
meta = {
"indexes": [{
"fields": ["$name", "$aka"],
"default_language": "english",
"weights": {
"name": 10,
"aka": 8
}
}]
}
我尝试像这样的常规搜索
Substance.objects.search_text('blah').order_by('$text_score')
但这不包括部分文字匹配。
所以我决定尝试通过以下方式与正则表达式进行部分文本匹配:
query = 'blah'
regex = re.compile('.*{}.*'.format(query), re.IGNORECASE)
substance_results = Substance.objects(name=regex)
这很好用,但是:
如何在MongoEngine中对多个具有权重的字段进行部分文本搜索(例如,“ b la h”中的“ la ”?)?
编辑:看来我的方法是一个未解决的问题:https://github.com/MongoEngine/mongoengine/issues/1808