Django干草堆包括相关内容,并提升它

时间:2014-03-08 01:50:09

标签: django django-haystack

我正在玩django-haystack并试图用elasticsearch实现它(我已经做过了)。我的模型有titlecontent以及tags字段ManyRelatedManager

tags = models.ManyToManyField( 'Tag', through = 'PostTags' )

我的搜索索引对象构建如下:

class PostIndex( indexes.SearchIndex, indexes.Indexable ):
    text = indexes.CharField( document = True, use_template = True )
    title = indexes.CharField( model_attr = 'title', boost = 1.125 )
    content = indexes.CharField( model_attr = 'content' )
    date_added = indexes.DateTimeField( model_attr = 'date_added' )

我的第一个问题是......如何在PostIndex对象中包含标签?与标题和内容相比,我想给标签带来更高的提升。

post_text.txt模板:

{{ object.title }}
{{ object.content }}
{% for tag in object.tags.all %}
    {{ tag.name }}
{% endfor %}

1 个答案:

答案 0 :(得分:0)

您可以为标记添加多个构面字段并填充&am​​p;在索引时提升。 在PostIndex模型中:

tags = FacetMultiValueField(boost = 2)

def prepare_tags(self, obj):
    return [t.name for t in obj.tags.all()]