gpt4 book ai didi

django - 在 django-filters 的 FilterSet 中使用全文搜索的最佳方式?

转载 作者:行者123 更新时间:2023-12-04 17:43:15 29 4
gpt4 key购买 nike

我的应用程序使用 rest-frameworkdjango-filter。我使用此 FilterSet 提供按 date 过滤的文章列表 (ModelViewSet):

from django_filters import rest_framework as filters

class ArticleFilter(filters.FilterSet):
start_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='gte')
end_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='lte')

class Meta:
model = Article
fields = ['pub_date']

我想在我的应用程序中添加搜索框,所以我需要另一个过滤器,它将在我的 Article 模型中使用全文搜索。我要搜索的字段是 titledescription。我决定添加带有 method 参数的 search 字段:

from django_filters import rest_framework as filters
from django.contrib.postgres.search import SearchVector

class ArticleFilter(filters.FilterSet):
start_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='gte')
end_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='lte')
search = filters.CharFilter(method='filter_search')

def filter_search(self, queryset, name, value):
return queryset.annotate(search=SearchVector('title', 'description')).filter(search=value)

class Meta:
model = Article
fields = ['pub_date']

它有效,但我不确定这是使用全文搜索过滤的最佳方式。我是否遗漏了什么或者这种方法可以吗?

最佳答案

这对于在小型数据库中没有太多文本可供查看的简单文本搜索来说是可以的。

当您进入更大的区域时,您需要为此优化您的数据库或转移到专用搜索引擎,如 Solr 或 ElasticSearch。 Postgres 有一个 section在全文搜索上,mysql 也是如此.

关于django - 在 django-filters 的 FilterSet 中使用全文搜索的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53467051/

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