跳转到主要内容

针对Plone的具有偏见的Solr集成

项目描述

kitconcept GmbH

kitconcept.solr

针对Plone的具有偏见的Solr集成

PyPI PyPI - Python Version PyPI - Wheel PyPI - License PyPI - Status

PyPI - Plone Versions

Meta Code Style

GitHub contributors GitHub Repo stars

功能

kitconcept.solr 是一个针对Plone站点的具有偏见的Solr集成软件包。它通过添加一个新的端点 @solr 来利用(并依赖于) collective.solr,该端点支持带有分面结果的搜索请求。

端点

名称 上下文
@solr Plone站点或文件夹式内容

使用 @solr 端点

《@solr》端点用于实现网站搜索,由《kitconcept.volto-solr》Volto 插件包提供。它也可以用于自定义组件。参数大致遵循正常网站搜索服务的参数,但在某些方面有所不同。

待定 提供更多关于此的信息。

目前,如果您想用于自己的目的,请参考《solr.py》模块的源代码。

文档

安装

将《kitconcept.solr》添加到您包的《setup.py》中的依赖项

    install_requires = [
        "kitconcept.solr",
        "Plone",
        "plone.restapi",
        "setuptools",
    ],

此外,将《kitconcept.solr》添加到您包的《configure.zcml》(或《dependencies.zcml》)

<include package="kitconcept.solr" />

关于 Plone 6.0 的说明

在 Plone 6.0 中,您必须添加一个额外的依赖项 "plone.restapi>=8.40.0"

该包还支持 Plone 5.2,其中 "plone.restapi>=8.21.2" 是一个有效版本。它将不支持图像缩放,但该包将在不显示图像预览的情况下优雅地工作。

通用设置

要自动在安装您的插件时启用此包,请将以下行添加到包的《profiles/default/metadata.xml》中的《dependencies》元素内

    <dependency>profile-kitconcept.solr:default</dependency>

源代码和贡献

我们欢迎对《kitconcept.solr》的贡献。

您可以在问题跟踪器中创建问题,或联系维护者。

开发要求

  • Python 3.8 或更高版本
  • Docker

设置

安装所有开发依赖项(包括 Plone)并使用以下命令创建新实例

make install

默认情况下,我们使用 6.x 系列中的最新 Plone 版本。

配置

大多数开发配置都使用 plone.meta 管理,因此请避免手动编辑以下文件

  • .editorconfig
  • .flake8
  • .gitignore
  • .pre-commit-config.yaml
  • news/.changelog_template.jinja
  • pyproject.toml
  • tox.ini

此外,还有 Solr 相关配置,将在以下章节中概述。

配置 Solr

Solr 通过默认配置进行配置,该配置位于本存储库中 /solr/etc/ 文件夹中。其中最值得注意的是定义 Solr 索引的 schema.xml。此包还构建了带有默认 Solr 版本的 docker 镜像,并使用此默认配置设置。

如果您需要自定义 Solr 配置(如添加新索引等),则应将 solr 文件夹复制到您自己的项目中,按您希望的进行自定义,然后根据此配置构建自己的 docker 镜像(或编译自己的 Solr 服务器)。

您可能想要这样做的一个典型用例是,如果您为某些内容类型添加了新字段,并且希望在这些额外字段中显示搜索结果中的值。在这种情况下,您希望将额外字段作为索引添加到 Solr。除非您在《kitconcept.volto-solr》前端包中的结果类型模板上进行了更改,否则您可能不需要这样做。

配置前端和后端包

该包支持使用《kitconcept.volto-solr》插件,并且设计用于与其一起使用。

配置可以自定义指定。在不进行任何额外配置的情况下,该包将使用默认配置,该配置以 json 格式指定在《kitconcept.solr.interfaces.IKitconceptSolrSettings》注册表中。

此配置设置会影响《kitconcept.solr》(此)后端包以及《kitconcept.volto-solr》前端包(Volto 插件)的行为。此外,《kitconcept.volto-solr》还有一个自己的 Volto 插件配置,这里不进行解释,有关这些选项,请参阅插件包的文档。

配置选项

配置选项的说明

fieldList

包含Solr应返回的字段。如果volto附加组件中的搜索结果模板被修改,并且需要比默认列表更多的字段,则必须在此处明确添加这些字段。

此外,相同的字段必须存在于Solr索引中 - 如果Solr索引或fieldList字段中缺少任一项,则字段值将静默不返回。不会显示错误。

示例值

[
  "UID",
  "Title",
  "Description",
  "Type",
  "effective",
  "start",
  "created",
  "end",
  "path_string",
  "mime_type",
  "phone",
  "email",
  "location",
  "image_scales",
  "image_field"
]
searchTabs

表示搜索页面中分面标签页的字典项列表。

label字段指定要在标签上显示的英文标签。提供翻译是前端包的责任,因为kitconcept.volto-solr为此默认项提供翻译,可以作为示例使用。

filter字段定义给定分面标签页的Solr搜索条件。这可能是一个内容类型,或者实际上是Solr能理解的任何条件,请参阅Solr文档以获取更多详细信息。

示例值

[
  {
    "label": "All",
    "filter": "Type(*)"
  },
  {
    "label": "Pages",
    "filter": "Type:(Page)"
  },
  {
    "label": "Events",
    "filter": "Type:(Event)"
  },
  {
    "label": "Images",
    "filter": "Type:(Image)"
  },
  {
    "label": "Files",
    "filter": "Type:(File)"
  }
]
覆盖配置选项

如果需要,可以通过GenericSetup在注册表中自定义默认的kitconcept.solr.interfaces.IKitconceptSolrSettings

使用重新索引助手

可以从包中导入激活和重新索引Solr的助手。

可以从Makefile中调用的重新索引脚本示例

from kitconcept.solr.reindex_helpers import activate_and_reindex
from Testing.makerequest import makerequest
from zope.site.hooks import setSite

import sys
import transaction


if __name__ == "__main__":
    app = makerequest(app)  # noQA

    # Set site to Plone
    site_id = "Plone"
    portal = app.unrestrictedTraverse(site_id)
    setSite(portal)

    activate_and_reindex(portal, clear="--clear" in sys.argv)

    transaction.commit()
    app._p_jar.sync()

添加kitconcept.solr包的升级步骤,以及第一次进行solr激活的步骤示例

from kitconcept.solr.reindex_helpers import activate_and_reindex
from plone import api

import logging


logger = logging.getLogger("your_package_name_here")


# We suggest to add two distinct upgrade step for the package installation
# and the solr activation, in case of a failure this allows to
# identify the problem easier.


def install_kitconcept_solr(context):
    st = api.portal.get_tool("portal_setup")
    st.runAllImportStepsFromProfile("kitconcept.solr:default")
    logger.info("Installed kitconcept.solr")


def activate_and_reindex_solr(context):
    activate_and_reindex(context)
    logger.info("Activated and reindexed solr")

更新翻译

make i18n

格式化代码库

make format

运行测试

此包的测试使用pytesttox进行。

运行所有测试

make test

运行所有测试,但在第一个错误时停止并打开一个pdb会话

./bin/tox -e test -- -x --pdb

只运行匹配TestEndpointEncoding的测试

./bin/tox -e test -- -k TestEndpointEncoding

只运行匹配TestEndpointEncoding的测试,但在第一个错误时停止并打开一个pdb会话

./bin/tox -e test -- -k TestEndpointEncoding -x --pdb

致谢

此附加组件的开发得到了德国航空航天中心(DLR)于利希研究中心(Forschungszentrum Jülich)的慷慨赞助。

German Aerospace Center (DLR) Forschungszentrum Jülich

kitconcept开发

许可证

该项目受GPLv2许可。

变更日志

1.0.0a6 (2024-04-09)

错误修复

  • 修复第一个标签条件 @reebalazs #26

1.0.0a5 (2024-03-01)

新功能

  • 添加对侧边栏分面条件的支持 @reebalazs #24

错误修复

  • 修复与单独用户相关的solr搜索安全问题 @reebalazs #20

1.0.0a5 (2024-02-01)

错误修复

  • 修复通用设置配置文件标题 @tisto #18

1.0.0a4 (2023-10-10)

新功能

  • 支持Plone 5.2 [@reekitconcept] #17

1.0.0a3 (2023-08-15)

文档

  • 将致谢添加到README @tisto #16

1.0.0a2 (2023-08-15)

错误修复

  • 增加collective.solr的版本 @reebalazs #14

1.0.0a1 (2023-08-11)

新功能

  • 生成ghcr.io/kitconcept/solr @reekitconcept #3

内部

  • 准备包发布 @ericof #5
  • 改进solr配置 @reebalazs #12

项目详情


下载文件

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

源分布

kitconcept.solr-1.0.0a6.tar.gz (84.3 kB 查看哈希值)

上传时间

构建分布

kitconcept.solr-1.0.0a6-py3-none-any.whl (34.1 kB 查看哈希值)

上传时间 Python 3

支持