Sto giocando con django-pagliaio e sto cercando di implementarlo con elasticsearch (l'ho già fatto). Il mio modello ha title
, content
e anche a tags
campo che è a ManyRelatedManager
:
tags = models.ManyToManyField( "Tag", through = "PostTags" )
Il mio oggetto indice di ricerca è costruito come segue:
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" )
La mia prima domanda è ... come posso includere i tag in PostIndex
oggetto? Voglio dare ai tag una spinta molto più alta rispetto al titolo e al contenuto.
post_text.txt
modello:
{{ object.title }}
{{ object.content }}
{% for tag in object.tags.all %}
{{ tag.name }}
{% endfor %}
risposte:
0 per risposta № 1È possibile aggiungere un campo multi-sfaccettatura per i tag e popolarlo e potenziarlo al momento dell'indicizzazione. Nel tuo modello PostIndex:
tags = FacetMultiValueField(boost = 2)
e
def prepare_tags(self, obj):
return [t.name for t in obj.tags.all()]