name: algolia-search description: “Algolia搜索实现的专家模式,包括索引策略、React InstantSearch和相关度调优。使用场景:添加搜索功能到项目中,涉及Algolia、instantsearch、搜索API、搜索功能。” source: vibeship-spawner-skills (Apache 2.0)
Algolia搜索集成
模式
使用Hooks的React InstantSearch
现代React InstantSearch设置,使用hooks进行实时搜索。
使用react-instantsearch-hooks-web包和algoliasearch客户端。 Widgets是可定制的组件,可以使用classnames。
关键hooks:
- useSearchBox:搜索输入处理
- useHits:访问搜索结果
- useRefinementList:面过滤
- usePagination:结果分页
- useInstantSearch:完整状态访问
Next.js服务器端渲染
Next.js的SSR集成,使用react-instantsearch-nextjs包。
对于SSR,使用<InstantSearchNext>而不是<InstantSearch>。 支持Pages Router和App Router(实验性)。
关键注意事项:
- 设置dynamic = 'force-dynamic’以获取新鲜结果
- 使用routing prop处理URL同步
- 使用getServerState获取初始状态
数据同步和索引
用于保持Algolia与数据同步的索引策略。
三种主要方法:
- 完全重新索引 - 替换整个索引(成本高)
- 完整记录更新 - 替换单个记录
- 部分更新 - 仅更新特定属性
最佳实践:
- 批量记录(理想:10MB,每批1K-10K条记录)
- 尽可能使用增量更新
- 使用partialUpdateObjects进行仅属性更改
- 避免deleteBy(计算成本高)
⚠️ 锐边问题
| 问题 | 严重性 | 解决方案 |
|---|---|---|
| 问题 | critical | 参见文档 |
| 问题 | high | 参见文档 |
| 问题 | medium | 参见文档 |
| 问题 | medium | 参见文档 |
| 问题 | medium | 参见文档 |
| 问题 | medium | 参见文档 |
| 问题 | medium | 参见文档 |
| 问题 | medium | 参见文档 |