部分文字与mongoengine的加权文字搜寻相符?

时间:2019-02-11 19:11:49

标签: python regex mongodb mongoengine

我的目标是使用部分文本搜索在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)

这很好用,但是:

  1. 不查询多个字段(显然是因为我只表示姓名)
  2. 不返回加权文本分数

如何在MongoEngine中对多个具有权重的字段进行部分文本搜索(例如,“ b la h”中的“ la ”?)?

编辑:看来我的方法是一个未解决的问题:https://github.com/MongoEngine/mongoengine/issues/1808

0 个答案:

没有答案