Wagtail CMS的PostgreSQL全文搜索后端
项目描述
Wagtail CMS 的 PostgreSQL 全文搜索引擎后端。
安装
Wagtail 中的 PostgreSQL 全文搜索需要 PostgreSQL >= 9.2(对 PostgreSQL >= 9.5 速度有显著提升),Django >= 1.10 和 Wagtail >= 1.8。
首先,使用以下命令安装模块:
pip install wagtail-pg-search-backend
然后,你需要进行一些配置。
将以下内容添加到项目设置中:
INSTALLED_APPS = [ ... 'wagtail_pgsearchbackend' ... ] WAGTAILSEARCH_BACKENDS = { 'default': { 'BACKEND': 'wagtail_pgsearchbackend.backend', 'SEARCH_CONFIG': 'english' } }
然后运行迁移以添加所需的数据库表
./manage.py migrate wagtail_pgsearchbackend
配置
“SEARCH_CONFIG” 键接受一个文本搜索配置名称。这控制了搜索和索引数据库时使用的词干、停用词等。要获取可用配置名称的列表,请使用此查询
SELECT cfgname FROM pg_catalog.pg_ts_config
用法
此后端实现了与《Wagtail 搜索文档》中提到的多数功能兼容所需的方法。
已知限制
SearchField.partial_match 行为未实现。
由于 PostgreSQL 的限制,SearchField.boost 只部分受尊重。它被修改,使得只能有 4 个不同的权重。如果您定义了 4 个或更少的不同的权重,一切都将非常准确。然而,如果您定义了 4 个以上的不同权重,您的搜索将稍微不准确。但话虽如此,它仍然可以工作,并且大致相同。
SearchField.es_extra 由于它专属于 ElasticSearch 而未处理。
在限制到特定字段时使用 SearchQuerySet.search 只支持数据库字段,而不是方法。
性能
PostgreSQL 搜索后端已经在几个小到中等规模的网站上进行了测试和验证,其性能与 ElasticSearch 相当。
当使用 PostgreSQL >= 9.5 时,有一些显著的速度提升。
要添加的功能
一旦此项目与 Wagtail 合并,以下功能将非常棒
按对象提升
分面搜索
自动完成(也许它应该替换部分搜索?)
拼写建议
开发
安装包和开发需求
pip install -e . -r requirements-dev.txt
创建迁移
首先创建一个数据库
createdb -Upostgres wagtail_pgsearchbackend
然后使用测试设置调用 makemigrations
django-admin makemigrations --settings=tests.settings
测试
要运行当前环境 Python 版本和 Wagtail 的 unittests,请运行
make unittests
要检查代码中的样式错误,请运行
make flaketest
要组合这些任务,请运行
make
要运行针对所有支持的 Python 和 Wagtail 版本的 unittests,请运行
tox
tox 运行还将创建一个覆盖率报告,该报告结合了所有运行的结果。此报告位于 htmlcov/index.html。
要按名称运行单个测试,请使用 runtests.py 脚本,并提供您想要测试的测试模块、类或方法的点路径,例如
./runtests.py tests.test_module.TestClass.test_method
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
wagtail-pg-search-backend-1.3.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | afcd888c51b6c282ae13691e305cded93dbfbcd3c5bccc474eb6f4dbe4f188e6 |
|
MD5 | c4a39a59e4dd23a6128683b9af1263cb |
|
BLAKE2b-256 | 855b76e80ecd6d1d3eec2b12d2ca90682a1d6cfec0c5e2d70a21043f7fd2bfc6 |
wagtail_pg_search_backend-1.3.2-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ea35c908df83ffb581ac088b355d3e2977515a2d1ab50e98a01390d01fa2d573 |
|
MD5 | 3f1674c261917526364d8e90fd200a64 |
|
BLAKE2b-256 | 207e1e67eec6a0acd83cbcf88eb91cf03ded2c8fd271f2b53100696b2939b1da |