Indexing 使用SQS和相关数据(Haystack)

Indexing 使用SQS和相关数据(Haystack),indexing,many-to-many,django-haystack,Indexing,Many To Many,Django Haystack,一个段落模型有两个字段,其中一个是多个字段 class Tag(models.Model): tag = models.CharField(max_length=500) def __unicode__(self): return self.tag admin.site.register(Tag) class Paragraph(models.Model): article = models.ForeignKey(Article) text =

一个段落模型有两个字段,其中一个是多个字段

class Tag(models.Model):
    tag = models.CharField(max_length=500)
    def __unicode__(self):
        return self.tag
admin.site.register(Tag)

class Paragraph(models.Model):
    article = models.ForeignKey(Article)
    text = models.TextField()
    tags = models.ManyToManyField(Tag)
    def __unicode__(self):
        return "Headline: " + self.article.headline + " Tags: " +  ', '.join([t.tag for t in self.tags.all()])
admin.site.register(Paragraph)
而my.txt文件反映了与索引标记的许多关系-

{{object.text}}
{% for tag in object.tags.all %}
{{tag.tag}}
{% endfor %}
My views.py然后使用SQS搜索所有标记(我希望在包含文本字段之前先完成此操作)并检索这些标记。因此,在本例中,问题是“政治”——

编辑: 和我的搜索索引.py

class ParagraphIndex(indexes.SearchIndex, indexes.Indexable):
    text= indexes.CharField(document=True, use_template=True)
    tags= indexes.CharField(model_attr='tags')
    def get_model(self):
        return Paragraph
    def index_queryset(self):
        return self.get_model().objects
    def load_all_queryset(self):
        # Pull all objects related to the Paragraph in search results.                                                                                                                    
        return Paragraph.objects.all().select_related()
然而,即使有几段文字带有“政治”的标签,这也不会引起任何反应。我是否遗漏了任何信息,或者我是否应该以另一种方式处理相关数据?我是一个初学者与草垛,所以任何帮助将不胜感激。提前谢谢

所以这是一个非常好的方法,帮助我解决了这个问题

根据这篇文章,我的search_indexes.py现在看起来是这样的:

class ParagraphIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    tags = indexes.MultiValueField()

    def prepare_tags(self,object):
        return [tag.tag for tag in object.tags.all()]

    def get_model(self):
        return Paragraph

    def index_queryset(self):
        return self.get_model().objects

    def load_all_queryset(self):
        # Pull all objects related to Paragraph in search results.                                                                                  
        return Paragraph.objects.all().select_related()
和my views.py:

def politics(request):
    paragraphs = []
    sqs = SearchQuerySet().filter(tags='Politics')
    paragraphs = [a.object for a in sqs[0:10]]
    return render_to_response("search/home.html",
            {"paragraphs":paragraphs},
            context_instance=RequestContext(request))
我正在使用elasticsearch搜索引擎。希望这有帮助

def politics(request):
    paragraphs = []
    sqs = SearchQuerySet().filter(tags='Politics')
    paragraphs = [a.object for a in sqs[0:10]]
    return render_to_response("search/home.html",
            {"paragraphs":paragraphs},
            context_instance=RequestContext(request))