Typesense与Plone 6集成
项目描述
zopyx.typesense
什么是zopyx.typesense
zopyx.typesense
是一个适用于Plone 6的插件,它提供了与搜索引擎 Typesense 的集成。其功能类似于 collective.solr
。
使用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作为专用服务运行,无论是在本地还是在云中。
推送到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集合名称
- 必须是您的Plone站点文档池的唯一名称API密钥
- 管理员API密钥(在Typesense中配置)搜索API密钥
- 搜索API密钥(在Typesense中配置)Typesense节点X的URL
- Typesense节点或Typesense集群的URL集合模式
- Typesense集合的模式(请参阅Typesense文档)
Plone控制面板中的Typesense管理
示例设置
对于典型的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
搜索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.pt
和app.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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2da66ffd41d197d9bd5dd4b35bbf9d9013c4e3019e3182d4b4b80599ab6181a8 |
|
MD5 | 90e89d63ba56d9284dd16314a74877f6 |
|
BLAKE2b-256 | fc794ad5be5a08f14278367c98567d88513dc99deb94eb6ee47b1d008b354ad3 |