跳转到主要内容

Typesense与Plone 6集成

项目描述

zopyx.typesense

什么是zopyx.typesense

zopyx.typesense 是一个适用于Plone 6的插件,它提供了与搜索引擎 Typesense 的集成。其功能类似于 collective.solr

Typesense Features

使用Typesense的原因包括

  • 非常容易安装(单个二进制文件或通过Docker)
  • 多字段文本索引
  • 自动生成(但高度可定制)的搜索UI
  • 可选的事实搜索以细化全文查询
  • 对Plone的影响最小(不替换ZCatalog)
  • 非常快速搜索
  • 可扩展和可定制
  • 可伸缩(通过Typesense集群)
  • 跨多个集合(即Plone站点)的联合搜索
  • 开源
  • 本地或Typesense云(商业服务)

点击 此处 查看简介视频。

zopyx.typesense不是

  • 替换ZCatalog/portal_catalog(文档更改以独立实体推送到Typesense,与Plone的portal_catalog完全解耦)
  • Plone搜索的即时替换。 zopyx.typesense自带可配置的自动生成搜索UI

需求

  • Plone 6(已测试)
  • Plone 5.2(未测试,假设适用于仅Dexterity的站点,在Python 3下)

架构

Typesense作为专用服务运行,无论是在本地还是在云中。

![架构](https://github.com/zopyx/zopyx.typesense/raw/master/docs/Typesense.png

索引

zopyx.typesense通过Plone生命周期钩子将内容更改(新文档、更新文档、删除文档)推送到Typesense。

搜索

浏览器与Typesense之间的搜索交互是直接发生的,没有Plone作为中间件。当您打开@@typesense-search视图时,搜索配置(通过搜索模板search.pt和相关的app.js文件定义)从Plone加载以在浏览器中自动生成搜索UI(搜索输入、分面搜索)。搜索查询直接发送到Typesense,结果一有可显示的就直接在浏览器中显示。Plone不参与搜索。没有通过Plone进行额外过滤(例如,关于访问控制的过滤)。

安装

zopyx.typesense添加到您的buildout中,重新运行buildout并在Plone中安装它。

有关Typesense的安装,请查看Typesense的安装文档(无论是通过Docker安装还是通过独立二进制文件安装)。

目前没有公开版本。您需要使用mr.developer从Github源检出安装zopyx.typesense

配置

Plone控制面板中的Typesense设置

Typesense settings

  • Typesense集合名称 - 必须是您的Plone站点文档池的唯一名称
  • API密钥 - 管理员API密钥(在Typesense中配置)
  • 搜索API密钥 - 搜索API密钥(在Typesense中配置)
  • Typesense节点X的URL - Typesense节点或Typesense集群的URL
  • 集合模式 - Typesense集合的模式(请参阅Typesense文档)

Plone控制面板中的Typesense管理

Typesense administration

示例设置

对于典型的Plone开发设置,其中Plone在本地主机上运行,您希望在相同机器上使用Docker运行Typesense(用于开发目的)

docker run -p 8108:8108 -v /tmp/data:/data typesense/typesense:0.22.1 --data-dir /data --api-key=some_api_key --search-only-api-key=some_search_api_key --enable-cors

此命令将在/tmp/data下存储Typesense数据文件,并在端口8108上打开连接。您需要指定两个API密钥:一个用于管理员访问,一个用于搜索API。

在Plone中安装zopyx.typesense后,您需要在Plone的Typesense控制面板中指定两个API密钥,以及将https://127.0.0.1:8108作为Typesense节点1的URL。

搜索UI

Typesense search

搜索UI从最小HTML模板自动生成,该模板定义了基本布局以及要使用的小部件见此处

通过src/zopyx/typesense/browser/static/app.js中的一些JavaScript代码实现了模板与Typesense UI生成器的集成。

视图

  • @@typesense-search渲染主(自动生成)搜索表单。此视图可以应用于任何文件夹级别。在文件夹上应用此视图意味着通过子路径进行过滤(仅搜索具有给定文件夹的索引内容)。

  • @@typesense-settings渲染Typesense的Plone控制面板

  • @@typesense-settings渲染Typesense的Plone控制面板

  • @@typesense-admin渲染Typesense的管理控制面板

  • @@typesense-indexed-content应用于任何任意内容对象将显示为该内容对象索引的所有数据

索引集成

zopyx.typesense通过内容添加、更新、删除(以及工作流变更)的生命周期事件集成到Plone中。默认情况下,zopyx.typesense索引所有内容对象的元数据(基本上是Dublin Core)以及内容对象的文本内容(标题、描述和所有RichText字段的文本内容)。类似于Plone的SearchableText索引,所有文本内容都在Typesense中的text字段中索引。

可以通过实现ITypesenseIndexDataProvider的索引适配器来覆盖每个内容类型的索引行为。请参阅此处的示例。

索引二进制内容和办公格式

针对File内容类型的索引器可选支持使用Apache TIKA索引二进制内容或办公格式。必须通过Typesense控制面板配置(可选)的Tika服务器的URL。运行Tika的最简单方法是使用Docker

docker run -d -p 9998:9998 apache/tika

在Typesense控制面板中将Tika配置为https://127.0.0.1:9998。请确保有关主机、IP地址和端口号的配置符合您的安全要求(通常,您不希望将内部服务暴露在公共IP地址上,而仅在localhost上暴露)。

批量重新索引

Typesense管理员控制面板中有一个名为重新索引所有的按钮,该按钮将

  • 创建一个新的名为<collection_name>-的集合
  • 提交所有Dexterity内容对象进行重新索引
  • 将新集合别名为配置的集合的正式名称

这意味着现有的Typesense集合将保持在线,直到完整的重新索引过程完成。然后,带有新鲜索引内容的Typesense集合在原子操作中替换旧集合。在重新索引过程中,搜索功能应不受影响。

自定义搜索视图

默认的Typesense搜索视图@@typesense-search应该适用于大多数Plone站点默认内容类型的常见用例。如果您需要其他内容,您有两个选择

  • 根据您的需求自定义search.ptapp.js(例如,使用z3c.jbot
  • 使用您自己的搜索模板和相关的JS配置创建您的搜索视图(s)

事务和最终一致性

所有索引/取消索引操作都是异步于Plone并在Plone事务系统之外发生的。因此,内容更改可能需要短暂延迟后才能在Typesense中可用。

注意事项和已知问题

  • zopyx.typesense(按设计)不与Plone的安全和访问模型集成。zopyx.typesense的主要目的是作为公共站点的搜索引擎。因此,建议在此期间仅索引公共内容。

资源

作者

Andreas Jung | info@zopyx.com | www.zopyx.com

可根据要求提供zopyx.typesense的付费服务。

项目详情


下载文件

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

源代码分发

zopyx.typesense-1.0.0a8.tar.gz (1.5 MB 查看哈希值)

上传时间 源代码

由以下机构支持