gpt4 book ai didi

python - 搜索多个模型 (Elasticsearch)

转载 作者:行者123 更新时间:2023-12-03 00:50:35 25 4
gpt4 key购买 nike

我向我的应用程序添加了第二个模型,现在我还想搜索该模型的字段,并在与第一个模型相同的 View 中返回它。

View .py

#Elasticsearch
def globalsearch_elastic(request):
qs = request.GET.get('qs')
page = request.GET.get('page')
if qs:
qs = PostDocument.search().query("multi_match", query=qs, fields=["title", "content", "tag"])
qs = qs.to_queryset()
else:
qs = ''
paginator = Paginator(qs, 10) # Show 10 results per page
try:
qs = paginator.page(page)
except PageNotAnInteger:
qs = paginator.page(1)
except EmptyPage:
qs = paginator.page(paginator.num_pages)
return render(request, 'MyProject/search/search_results_elastic.html', {'object_list':qs})

目前仅在 PostDocument 中搜索匹配项,我如何在此函数中从 Documents.py 添加第二个匹配项?或者更具体地说,我必须在这一行中更改什么才能搜索多个文档?

qs = PostDocument.search().query("multi_match", query=qs, fields=["title", "content", "tag"])

这就是“qs”的来源(base.html):

<div class="globalsearch">
<form id="searchform" action="{% url 'search' %}" method="get" accept-charset="utf-8">
<div class="form-row align-items-center">
<input class="class-search-input-fields" id="searchbox" name="qs" required="required" type="text" placeholder="Search ..."><a>in</a>
<div class="custom-dropdown">
<a>{{ categorysearch_form.category }}</a>
</div>
<button class="btn btn-dark" type="submit">
<i class="fa fa-search"></i>
</button>
</div>
</form>
</div>

文档.py:

提前致谢

最佳答案

让它像这样工作:

def globalsearch_elastic(request):
qs = request.GET.get('qs')
page = request.GET.get('page')
if qs:
post = PostDocument.search().query("multi_match", query=qs, fields=["title", "content", "tag"]).to_queryset()
post_extra = PostExtraDocument.search().query("multi_match", query=qs, fields=["title", "content_preview", "tag"]).to_queryset()
qs = list(
sorted(
chain(post, post_extra),
key=lambda objects: objects.pk
))
else:
qs = ''
paginator = Paginator(qs, 10) # Show 10 results per page
try:
qs = paginator.page(page)
except PageNotAnInteger:
qs = paginator.page(1)
except EmptyPage:
qs = paginator.page(paginator.num_pages)
return render(request, 'MyProject/search/search_results_elastic.html', {'object_list': qs})

我知道这可能不是“最佳实践”,因为我总是必须加载所有帖子,然后对它们进行排序并按创建日期(pk)显示它们。

无论如何,从我的角度来看,如果你不必搜索数百万个帖子,那很好......除此之外,你仍然拥有弹性的力量,即使这不能对我的帖子列表进行排序

关于python - 搜索多个模型 (Elasticsearch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54347708/

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