【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Django 1.10 提供了 PostgreSQL 中的全文检索功能

  • 2016-08-11
  • 本文字数:1524 字

    阅读完需:约 5 分钟

Django 1.10 版本已经发布,该版本所给出的新特性包括:对 PostgreSQL 数据库的全文检索、Unicode 用户名的官方支持和新型的中间件。

作为 Django 软件基金会的动态语言,该 Django 的重大发布包括了在 django.contrib.postgres.search 模块中对数据库函数调用的功能,这方便了使用 PostgreSQL 的全文检索引擎。

Django 团队给出了例子代码,实现对数据库中某一行数据进行简单搜索。代码如下所示:

复制代码
>>> Entry.objects.filter(body_text__search='Cheese')
[<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]

“代码从数据库的 body_text 域调用一次 _to_tsvector_ 函数,并为检索词‘Cheese’调用一次 _plainto_tsquery_ 函数。这两次函数调用均使用缺省的数据库检索配置。检索结果通过对查询与向量的匹配而得到。为使用该检索查找功能,环境设置 INSTALLED_APPS 中必须包括’django.contrib.postgres’。”

在 Django 文档中,可以查阅到使用 SearchVector SearchQuery SearchRank 类的例子,详细内容参见这里

Django 1.10 版本的新特性还包括引入了一种新型的中间件,该中间件所解决的问题是,“在 DEP 0005 改进建议中提出的旧式中间件中缺乏严格意义上的请求和响应层的问题”。

作为一种“钩入 Django 请求及响应处理的架构”,Django 的新型中间件提供了 django.utils.deprecation.MiddlewareMixin 模块,用于创建与 MIDDLEWARE 和 MIDDLEWARE_CLASSES 兼容的中间件类。

按 Django 文档所述,“该混合类型模块提供了 ___init__()_ 方法,接受 _get_response_ 作为可选参数,并将该参数保存在 _self.get_response_ 中”。对此方法详解如下:

__call__() 方法:

  1. 调用 self.process_request(request) (如果已定义了);
  2. 调用 self.get_response(request),从后续的中间件和视图中获取响应;
  3. 调用 self.process_response(request, response) (如果已定义了);
  4. 返回响应。

在网络上关于 Django 最新发布的新闻得到了很多的肯定,但也一些评论提出了对 Channels 项目的需求。

在 HackerNew 网站对“Django 1.10 发布了”的讨论中,用户 Tom Forbes 是这样评论的:“Channels 项目真是可耻呀,我发现新版本中并没有包含这个项目”。而用户 ubernostrum 是这样回复的:“Channel 项目将会取得成功的。它只是尚未准备好在1.10 版本中发布。希望它会在1.11 版本中准备好,并将在Django 中启用。”

用户 passiveincomelg 给出了不太确定的说法:“我对Channel 的态度有些矛盾。一方面,使用它所能做的事情是很酷的,它的设计十分聪明地避免了重写所有Django 程序为异步的。另一方面,为实现这个Go 和Erlang 所轻易实现的功能,还有要去完成多少的恶作剧,这真是令人抓狂。”

Django 1.10 版还包括一些不向后兼容的改进。而也有一些特性在达到其弃用周期后,也已经被弃用

这些被弃用的特性包括:在LOGIN_URL 和LOGIN_REDIRECT_URL 中设置使用可带点的Python 路径;django.core.context_processors、django.db.models.sql.aggregates 和django.contrib.gis.db.models.sql.aggregates 等模块;为使用SQLCompiler 的quote_name_unless_alias 方法而支持用别名方式直接调用SQLCompiler;以及其它一些私有API。

作为一种用Python 编写的自由开源Web 应用框架,Django 以三句版BSD 协议发布,它欢迎来自InfoQ 社区的贡献。

任何寻求改进和对Django 有所贡献的人,可以访问 docs.djangoproject.com/en/dev/internals/contributing/ .

查看英文原文: Django 1.10 Brings Full Text Search for PostgreSQL


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-08-11 19:001946
用户头像

发布了 227 篇内容, 共 71.4 次阅读, 收获喜欢 27 次。

关注

评论

发布
暂无评论
发现更多内容

推荐8个提高工作效率的IntelliJ插件

风铃架构日知录

后端 开发 Java、 intellij java架构师

华为云桌面驱动数字内容变革,按下文娱社交行业升级加速键

爱尚科技

华为云桌面Workspace-企业云上办公的最优选择

爱尚科技

安全高效,华为云桌面打造全新云上办公体验!

科技怪授

云服务器评测:这个双十二,哪个云服务器值得买?

科技热闻

2022年最有价值书单

月亮上的六便士

好书推荐

华为云助力中建一局会议上云,沟通协同更高效!

IT科技苏辞

华为云桌面,为企业数字化办公添砖加瓦!

科技怪授

华为云桌面Workspace,如何让用户安全高效云上办公?

科技怪授

英特尔推出oneAPI 2023工具包,显著提升跨平台生产力

科技热闻

华为云会议,开会就是如此简单

IT科技苏辞

华为云桌面,助您解锁轻松高效办公模式

科技怪授

【PCB设计】孔间距不可忽视,小心废板!

华秋PCB

工具 PCB PCB设计

消息中间件执行原理

C++后台开发

分布式 中间件 消息队列 后端开发 linux开发

易观千帆 | 2022年11月银行APP月活跃用户规模盘点

易观分析

App 手机银行 用户分析

边疆水土培养边疆人才,云南大学研究团队借助昇思MindSpore提出智慧医疗创新解决方案

Geek_2d6073

英特尔推动办公场景智能升级,助力企业数字化转型

科技热闻

揭秘百度智能测试在测试定位领域实践

百度Geek说

百度 测试定位 智能测试 12 月 PK 榜

双币质押挖矿分红模式系统开发技术模式方案

I8O28578624

华为云桌面Workspace带你走进云上办公新时代

爱尚科技

华为云桌面能为设计行业提供哪些“黑科技”?

爱尚科技

华为云桌面服务,拓宽公有云赛道,持续引领产业发展

爱尚科技

华为云Workspace树立云服务模式新标杆

科技怪授

贾斯特里尼&布鲁克斯酿酒专家帮您区分干红葡萄酒和甜红葡萄酒

联营汇聚

华为云会议助力中建一局视频会议数字化升级

IT科技苏辞

产品更新快培训成本高?华为云会议助力企业降本增效

IT科技苏辞

致力程序员成长,阿里大佬“亲码”Java全栈架构笔记,差距不止一点点

程序员小毕

程序员 程序人生 后端 架构师 java面试

区块链NFT商城系统开发技术

薇電13242772558

区块链

华为云解锁云原生数据库发展新动能

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

一周刷爆LeetCode,字节技术官亲码算法与数据结构刷题宝典真香

Java永远的神

程序员 数据结构 算法 LeetCode 大厂面试

gitlab ldap配置

阿呆

gitlab ldap

Django 1.10提供了PostgreSQL中的全文检索功能_Python_James Chesters_InfoQ精选文章