【发布时间】:2020-03-23 23:55:05
【问题描述】:
我正在 Django 中开展一个项目,我必须在其中找到一种解决方案来创建快速搜索,该快速搜索大约需要 2 到 3 秒才能立即加载搜索结果。我正在使用 Django REST API 来处理查询。目前,我得到了结果,但往往需要花费大量时间来浏览包含大量数据的整个数据库。我需要一个我可以实施的解决方案,以便我可以将搜索时间减少到最多 3 秒。 PS。我使用 PostgreSQL 作为数据库。
我的动机是搜索城市或国家,我需要得到结果。
models.py
class Search(models.Model):
city = models.CharField('Search Destination', max_length=256, null = true)
country = models.CharField('Search country', max_length=256, null = true)
latitude = models.CharField('Search latitude', max_length=256, null = true)
longitude = models.CharField('Search longitude', max_length=256, null = true)
createdAt = models.DateTimeField('Created At', auto_now_add=True, null = true)
slug = models.SlugField(max_length=256, null=True, blank=True)
def __str__(self):
return self.city
serializers.py
class SearchSerializer(serializers.ModelSerializer):
class Meta:
model = Search
fields = '__all__'
views.py
class ApiLandingSearchView(generics.ListAPIView):
search_fields = ['city', country ]
serializer_class = SearchSerializer
filter_backends = [filters.SearchFilter]
queryset = Search.objects.all()
【问题讨论】:
-
分享您的模型和查询可能会有所帮助
-
关于数据,没有“这样做会很快”的方法。因为一切本质上都是一种权衡,所以很难在不了解有关数据类型、数据量、硬件规格或正在运行的查询的信息的情况下给出任何建议。如果不知道这些,很难给出适当的答案。
标签: django postgresql search django-rest-framework dataset