django - 如何优化 Django oscars 搜索视图?
问题描述
我正在使用Django oscar(2.1.1),我想优化 Django Oscars 默认搜索视图,即class ESProductSearchHandler(CoreESProductSearchHandler).
我知道使用 select_related() 和 prefetch_related() 我可以优化视图,但我不明白我将使用哪个特定功能必须重写才能优化产品表的默认 Django-Oscars 搜索视图。
我挖掘了 Django Oscars 搜索应用程序并找到了FacetedSearchView()
但是我需要在这里覆盖哪种方法?我在这里看不到任何 get_queryset() 函数然后我search_handlers.py
在目录模型中查看了我想我需要覆盖这个函数
def get_search_queryset(self): sqs = super().get_search_queryset() if self.categories: for category in self.categories: sqs = sqs.filter_or(category=category.full_name) return sqs
并在facets.py
发现这个
def base_sqs():
"""
Return the base SearchQuerySet for Haystack searches.
"""
sqs = SearchQuerySet()
for facet in settings.OSCAR_SEARCH_FACETS['fields'].values():
options = facet.get('options', {})
sqs = sqs.facet(facet['field'], **options)
for facet in settings.OSCAR_SEARCH_FACETS['queries'].values():
for query in facet['queries']:
sqs = sqs.query_facet(facet['field'], query[1])
return sqs
- 这里有哪些方面,我如何利用它来优化搜索视图?
- 让我知道我是否正确?如果是的话,我该如何优化它?
正如您在 django-silk 调试工具栏搜索视图中看到的那样,正在执行668次查询?
请提供建议和一个工作示例(如果可能),以便我可以实现相同并优化默认行为。
注意:是的,我正在使用弹性搜索并使用 oscars ESProductSearchHandler()。
解决方案
推荐阅读
- ios - 为什么 AVPlayer 定期观察者在设备上的开始时间之前显示当前时间?
- php - 如何访问值形式数组
- javascript - React JS 前端中的错误 Access-Control-Allow-Origin
- python - 我们如何近似计算运行一个程序需要多少内存?
- c++ - 在 C++ MFC 中按下 Tab 键时将焦点从 CIPAddressCtrl 转移到另一个控件
- python - 创建后网址不存在
- azure - AADSTS65001:用户或管理员未同意使用 ID 为“的应用程序”
- javascript - Vue js获取存储在div中的隐藏输入的单个值
- python - 从 mysql 选择/加载数据到内存/pandas 的最快方法
- select - 开放层:持久选择交互功能的问题