Django haystack,搜索中某些字段的优先级

Poo*_*ani 6 django search whoosh django-haystack

我有这样的模型:

class MyModel(models.Model):
    desc1 = models.TextField(blank=True, default="")
    desc2 = models.TextField(blank=True, default="")
Run Code Online (Sandbox Code Playgroud)

我想在这个模型的字段上搜索字符串.假设MyModel的这些实例:

1: desc1="ABc?", desc2="asdasd you"
2: desc1="Hello, How are you?", desc2="Thank you!"
3: desc1="ABc?", desc2="ajdf"
Run Code Online (Sandbox Code Playgroud)

当我搜索"你"时,它应该显示我,第一和第二个实例.最后我需要显示desc1中"你"比其他人更高的结果.例如,在此示例中,第二个应高于第一个.

我使用了haystack进行搜索并为此创建了一个模板.但我无法解决优先问题.

Mar*_*ian 3

当你说“优先级”时,用搜索术语来说,你真正的意思是“排序”。

Django Haystack 可以按字段匹配进行排序,但它可以按“分数”排序,其中它使用算法来确定排序顺序。您可以通过“提升”来影响分数的权重 - 请参阅 http://django-haystack.readthedocs.org/en/latest/boost.html

另外,您应该考虑在 search_indexes.py 中添加额外的字段,仅用于加权。您不需要在 Django 模型字段和索引之间建立一对一的映射。就像是

class MyModelIndex(QueuedSearchIndex):
    desc1 = indexes.CharField()
    desc2 = indexes.CharField()
    otherWeightedField = indexes.CharField()

    def prepare_otherWeightedField(self,obj)
        # fill the extra field with extra stuff to help you sort, based on processing values from other fields
Run Code Online (Sandbox Code Playgroud)