我正在玩django-haystack并试图用elasticsearch实现它(我已经做过了)。我的模型有title
,content
以及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 %}
答案 0 :(得分:0)
您可以为标记添加多个构面字段并填充&在索引时提升。 在PostIndex模型中:
tags = FacetMultiValueField(boost = 2)
和
def prepare_tags(self, obj):
return [t.name for t in obj.tags.all()]