针对Plone的具有偏见的Solr集成
项目描述
kitconcept.solr
针对Plone的具有偏见的Solr集成
功能
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
运行测试
运行所有测试
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)的慷慨赞助。
由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
内部
项目详情
kitconcept.solr-1.0.0a6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7cd6f022e726026afb9b807473acc50067a47b34865e6ddbfbeed5d2cfe27e41 |
|
MD5 | b53fa1b646f1c0ad089f7aa628b71f7e |
|
BLAKE2b-256 | fa0e562d1582ed1ffd5e1d147eb9b05dfe786f9999482a04c4e9f16449ee313d |
kitconcept.solr-1.0.0a6-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7f38d3b2912dba81aa6cadedf2f55bc643869ab1783e80866dd616ad9e932b1f |
|
MD5 | ab00709439018b651324623923cf12a9 |
|
BLAKE2b-256 | 4dce9de2ed672e838a62338343bc7fa8ff20d51eac3b2c479ca855120a44c73e |