python-3.x - 如何加快搜索,包括特殊字符替代和嵌套循环(Python/Django webapp)?
问题描述
我在 python/django webapp 后端嵌套了三个循环。all_recommended_services
有我需要通过的所有服务信息。alternatives
具有在搜索栏中输入的搜索条件,包括所有特殊字符替代项(例如:u
替换为ú
、ö
withő
等等...)。最后,循环for value in alternative:
遍历所有被空格分开的搜索词。有搜索关键字组合会产生数百万种选择,这完全杀死了 web 应用程序。有没有一种有效的方法来加快这个速度?我试图研究itertools.product
使用笛卡尔,但它并没有真正帮助我避免更多的循环或加快进程。任何帮助深表感谢!
for service in all_recommended_services:
county_str = get_county_by_id(all_counties, service['county_id'])
for alternative in alternatives:
something_found = False
for value in alternative:
something_found = search_in_service(service, value, county_str)
if not something_found:
break
if something_found:
if not service in recommended_services:
recommended_services.append(service)
解决方案
在您搜索时,我会推荐这个名为Django-haystack 的包。它易于使用并且高度可定制以满足您的需求。由于您没有包含更多详细信息,因此我无法提供更详细的演示,但文档很全面。
推荐阅读
- javascript - Nuxt 应用程序在刷新动态路由时返回 404(Tomcat 服务器)
- postgresql - GraphQL Playground 查询 JSON 到 Postgres - 如何避免查询字符串中的双引号?
- javascript - 如何在文档数组中搜索字符串数组
- awk - 计算列块的平均值
- javascript - 如何在 Bootstrap 中更改字体大小?
- java - 尝试运行junit测试并得到以下错误:未报告的异常溢出;必须被抓住或宣布被扔掉
- .net-core - 在 .NET Core Web API 中为某些控制器而不是其他控制器设置身份服务器
- swift - 这是从 Notification.Name.CNContactStoreDidChange 通知中识别哪个联系人更新的正确方法吗?
- jquery - 点击时
- mysql - 如何更新引用 MySQL 中父表的外键字段的值?