Wagtail CMS的PostgreSQL全文搜索后端

wagtail-pg-search-backend的Python项目详细描述


http://img.shields.io/travis/wagtail/wagtail-pg-search-backend/master.svg

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 search docs

已知限制

  • SearchField.partial_match行为未实现。
  • 由于postgresql的限制,SearchField.boost只是部分 受人尊敬的。它被改变了,所以只能有4个不同的助推器。 如果你定义了4个或更少不同的助推器, 一切都会非常准确。 但是,如果定义的范围超过 4种不同的助推器。也就是说,它会起作用,大致相同。
  • SearchField.es_extra未处理,因为它是特定的 去ElasticSearch。
  • 在限制为特定字段时使用SearchQuerySet.search只是 支持数据库字段,而不是方法。

性能

PostgreSQL搜索后端已经在一些小型的 中小型网站及其性能 关于弹性搜索。

使用postgresql>;=9.5时,速度有了一些明显的提高。

要添加的功能

一旦该项目与wagtail合并,这些功能将非常棒:

  • 每对象增压
  • 刻面
  • 自动完成(也许它应该取代部分搜索?)
  • 拼写建议

开发

安装软件包和开发要求:

pip install -e . -r requirements-dev.txt

创建迁移

首先创建数据库:

createdb -Upostgres wagtail_pgsearchbackend

然后使用测试设置调用makemigrations:

django-admin makemigrations --settings=tests.settings

测试

为当前环境的python版本运行unittests 摇尾跑:

make unittests

要检查代码的样式错误,请运行:

make flaketest

要组合这些任务,请运行:

make

对所有受支持的python版本运行unittest 摇尾跑:

tox

tox运行还将创建一个包含结果的覆盖率报告 所有的跑步。此报表位于htmlcov/index.html

要按名称运行单个测试,请使用runtests.py脚本并给出 虚线路径测试模块、类或方法 想要测试例如:

./runtests.py tests.test_module.TestClass.test_method

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java提供了大量的Quartz工作线程   来自SOAPException的java抛出超时异常   java通过REST web服务同步PostgreSQL过程调用   java Hibernate:在关联表中设置值   javaimapidlechanneladapterjavax。邮政AuthenticationFailedException:[警报]同时连接太多   JavaApacheStorm:stormkafkamonitor脚本引发异常   java将jar链接到战争   Matlab与Java的集成方法   安卓公司。谷歌。ads.AdView未能实例化java。lang.ClassNotFoundException:org。json。JSONException   “String forecastStr=mForecastAdapter.getItem(position);”行中出现java错误阳光工程   java如何将Mono中的列表属性作为流量进行操作?   java DecimalFormat类不必要地给出整数   java@IfProfileValue两个spring配置文件   java如何使用SwingWorker创建多线程?   java从扩展SwingWorker的内部类触发事件   java二叉树高度实现