搜索概述
TinaCMS 提供了内置的内容搜索功能。这对于允许编辑者快速在网站中查找内容非常有用。TinaCloud 的内容搜索由 Fergus McDowall 的 search-index 库提供支持。
注意:目前在自托管的 TinaCMS 中不支持搜索功能。
配置
要启用搜索功能,您需要在 TinaCMS 配置中填充 search 字段。使用 TinaCloud 搜索时,搜索配置中唯一必需的元素是 search.tina.indexerToken 字段。可以从项目的 TinaCloud 仪表板中获取。
定义
构建搜索索引
开发
当搜索配置完成并且站点在本地使用 dev 命令运行时,内容将在启动时自动索引。对本地内容的任何更改也会触发对(本地)搜索索引的更新。
生产
当搜索配置完成并且站点使用 build 命令为生产环境构建时,搜索索引将自动创建并上传到 TinaCloud。站点的每个 Git 分支都有一个单独的搜索索引。
请注意,搜索索引在站点构建后是“实时”的,因此任何新添加或删除的内容可能会在站点部署之前反映在搜索索引中。可以通过将 --skip-search-index cli 选项传递给 build 命令来跳过构建搜索索引。然后可以在站点部署完成后单独运行 search-index 命令。
自定义搜索索引
排除字段
默认情况下,所有集合字段类型(除 image 外)都包含在搜索索引中。您可以通过控制哪些字段包含在搜索索引中来提高内容的可发现性。这可以通过在集合模式中的字段上设置可选的 searchable 属性来完成。例如,要禁用作者字段的索引,请使用类似以下的代码:
限制文本字段
默认情况下,构建搜索索引时仅使用文本字段的前 100 个字符。这可以在 search 配置中全局调整(见上文),但也可以在每个字段的基础上进行调整,如下所示:
模糊搜索
TinaCMS 包含内置的模糊搜索功能,即使用户输入错误或拼写错误,也能帮助他们找到内容。模糊搜索默认启用,因此您的搜索将自动处理常见的拼写错误,无需额外配置。
模糊搜索在 tinacms@3.3.0 和 @tinacms/cli@2.1.0 中发布。无需更改配置即可获得新搜索的好处——只需更新您的包即可!
模糊搜索的工作原理
模糊搜索在您的内容中查找与用户输入“相似”的术语,即使它们不完全匹配。TinaCMS 使用 Damerau-Levenshtein 距离算法,该算法通过计算将一个单词转换为另一个单词所需的最小单字符编辑次数来衡量相似性。
支持的编辑操作:
当用户搜索时,他们查询中的每个单词都会扩展为包含来自您索引内容的相似术语。例如,搜索 "Raect tutrial" 也会匹配包含 "React tutorial" 的文档。
配置
模糊搜索开箱即用,具有合理的默认设置。您可以通过在搜索配置中添加 fuzzyOptions 来自定义其行为:
示例
以下是模糊搜索在默认设置下将捕获的拼写错误示例:
禁用模糊搜索
如果您只希望精确匹配,可以禁用模糊搜索:
性能提示
模糊搜索包括对重复查询的自动缓存。如果您需要进一步优化性能,请考虑以下调整:
更严格、更快匹配的示例配置:
故障排除
替代搜索提供商
目前仅支持 TinaCloud 的搜索 API,但我们计划在不久的将来提供替代提供商,以及实现自定义搜索提供商的文档。如果您希望支持特定的搜索提供商,请告诉我们。