gpt4 book ai didi

indexing - 将 SQS 与相关数据一起使用 (Haystack)

转载 作者:行者123 更新时间:2023-12-04 05:07:23 24 4
gpt4 key购买 nike

我有两个用于段落模型的字段,其中一个是多对多字段。

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)

我的 .txt 文件反射(reflect)了与索引标签的多对多关系 -
{{object.text}}
{% for tag in object.tags.all %}
{{tag.tag}}
{% endfor %}

我的 views.py 然后使用 SQS 搜索所有标签(我想在包含文本字段之前先完成此操作)并检索这些标签。所以在这种情况下,查询是“政治”-
def politics(request):
paragraphs = []
sqs = SearchQuerySet().filter(tag="Politics")
paragraphs = [a.object for a in sqs[0:10]]
return render_to_response("search/home_politics.html",{"paragraphs":paragraphs},context_instance=RequestContext(request))

编辑:
和我的 search_indexes.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()

然而,即使有几段有“政治”标签,这也不能检索任何内容。我在这里遗漏了什么还是应该以另一种方式处理相关数据?我是 Haystack 的初学者,因此非常感谢任何帮助。提前致谢!

最佳答案

所以这是一个非常useful article这帮助我解决了问题。

根据这篇文章,这就是我的 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()

和我的意见.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。希望这有帮助!

关于indexing - 将 SQS 与相关数据一起使用 (Haystack),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com