跳转到主要内容

PostgreSQL全文搜索与django orm的集成。

项目描述

django orm扩展包的Pgfulltext模块(将第三方插件集成到一个统一的包中)。

  • 现在兼容Python2和Python3,使用相同的代码库。

  • 准备在django 1.3、1.4、1.5和1.6上运行

简介

全文搜索(或简称文本搜索)提供识别符合查询的自然语言文档的能力,并可按相关性排序。最常见的搜索类型是查找包含给定查询词的所有文档,并按其与查询的相似度排序。查询和相似度的概念非常灵活,取决于具体的应用。最简单的搜索将查询视为一组单词,将相似度视为查询词在文档中的频率。(摘自postgresql文档。)

djorm_pgfulltext.fields.VectorField

一个tsvector索引字段,用于将转换后的文本存储到特殊格式。

djorm_pgfulltext.models.SearchManager

包含用于搜索和重新生成索引的辅助方法的Django管理器。

如何使用它

要使用它,您需要添加一个新字段。显然,这不是强制的,因为它可以在调用 search 时指定您想要搜索的字段。请注意,您应该为要使用的字段放置相应的索引。

from djorm_pgfulltext.models import SearchManager
from djorm_pgfulltext.fields import VectorField
from django.db import models

class Page(models.Model):
    name = models.CharField(max_length=200)
    description = models.TextField()

    search_index = VectorField()

    objects = SearchManager(
        fields = ('name', 'description'),
        config = 'pg_catalog.english', # this is default
        search_field = 'search_index', # this is default
        auto_update_search_field = True
    )

管理器自动将 update_search_field 方法注入到模型实例。另外,为了避免覆盖保存方法,您可以传递参数 auto_update_search_field = True,这样在调用 save 方法时,索引字段将自动更新。

使用示例

  • 配置参数是可选的,默认为‘pg_catalog.english’。

  • 字段参数是可选的。如果是一个元组的列表,您可以指定每个字段的排名,如果它是 None,则默认为‘D’。

  • 它也可以是一个简单的字段列表,排名将默认选择。如果字段为空,则索引应用于所有字段 CharFieldTextField

要搜索,请使用管理器的 search 方法。当前实现默认使用无重音扩展来忽略重音。此外,搜索不区分大小写。

>>> Page.objects.search("documentation & about")
[<Page: Page: Home page>]
>>> Page.objects.search("about | documentation | django | home", raw=True)
[<Page: Page: Home page>, <Page: Page: About>, <Page: Page: Navigation>]

默认情况下,FTS扩展使用 plainto_tsquery 而不是 to_tosquery,因此使用 raw 参数。

一般注意事项

您必须确保已安装扩展 unaccent

CREATE EXTENSION unaccent;
ALTER FUNCTION unaccent(text) IMMUTABLE;

您可以在 template1 数据库上安装此扩展,以便该扩展自动对所有新创建的数据库可用。

变更日志

0.9

  • 修复 django 1.6 兼容性(事务管理)。

Bitdeli badge

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

djorm-ext-pgfulltext-0.10.tar.gz (7.8 kB 查看哈希)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面