/ /関連コンテンツを含むDjango haystackおよびそれをブーストする-django、django-haystack

関連コンテンツを含み、それを後押しするDjango干し草 - django、django-haystack

私は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 %}

回答:

回答№1は0

タグのマルチファセットフィールドを追加し、インデックス作成時にそれを入力およびブーストできます。 PostIndexモデルで:

tags = FacetMultiValueField(boost = 2)

そして

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