# Typesense 使用场景

我们最初构建 Typesense 主要是为了打造一个针对快速、容错全文搜索优化的搜索引擎。

然而,令我们惊喜的是,用户们开始将其用于搜索之外的许多有趣场景。 根据用户反馈,我们已经能够更好地支持其中一些使用场景。

# 适用场景

以下是 Typesense 的一些典型应用场景(持续更新中):

  1. 支持容错的 模糊即时搜索,用于实现 自动补全 搜索框和 搜索结果 页面
  2. 分面导航和浏览体验,用户无需输入关键词,而是直接通过筛选多个属性来逐步缩小范围找到目标文档(例如:https://ecommerce-store.typesense.org/ (opens new window)
  3. 作为 地理分布式缓存,将数据放置在靠近用户的位置。由于您已将数据快照发送给 Typesense,可以直接从地理分布式 Typesense 集群获取文档,该集群会将请求路由到离用户最近的节点,从而降低延迟,而无需访问可能位于单一地理区域的主数据库。
  4. 使用向量搜索 (opens new window)查找相似文档。"相似性"可以由您构建的任何 ML 模型定义,您可以将模型输出(向量)索引到 Typesense 中,然后进行最近邻搜索。 通过这种方式,可以实现个性化推荐、视觉搜索、语义搜索、相似性搜索等功能。
  5. 多租户搜索,其中某些记录/字段只能被特定用户组访问(例如登录用户、管理员、特定付费计划的用户等)
  6. 联邦搜索,在多个索引上同时执行搜索,并将结果并排展示给用户。
  7. 地理搜索,搜索/排序与给定经纬度邻近的记录。
  8. 语义搜索,用户可以输入概念相关的关键词,Typesense 会从您的数据集中返回结果,即使该确切关键词不存在。例如,用户搜索"ocean"而您的数据集中只有"sea"这个关键词,语义搜索仍能检索到包含"sea"的相关结果。
  9. 基于聊天的 LLM(如 ChatGPT)提供长期记忆。Typesense 的向量搜索和混合搜索功能可以让聊天 LLM 根据您的 JSON 数据集中的信息回答用户问题。利用这一点,您可以在数据集上构建对话式聊天机器人。
  10. 利用 Typesense 返回的聚合分面指标,为数据可视化(如图表和表格)提供支持。

如果您将 Typesense 用于其他场景,欢迎在我们的 Slack 社区 (opens new window) 中告诉我们。

# 不适用场景

以下列举了一些我们不建议使用 Typesense 的情况:

  1. 不应将 Typesense 用作主数据存储(即存储数据的唯一副本)。

    Typesense 设计为次级数据存储。这意味着您应该使用另一个主数据库来存储数据的原始副本,作为应用程序写入数据的目标。然后您可以将数据同步到 Typesense 中,以支持上述某个用例。

  2. 通常不适合用于搜索应用程序日志

    这是因为日志数据量庞大,根据日志数据集的大小,将日志存储在内存中可能会造成高昂成本。此外,日志通常不需要即时输入即搜索的体验(而这正是 Typesense 优化的方向)。也就是说,我们确实有一些用户希望在其应用的 UI 中展示部分用户生成的日志供搜索/浏览,对于这种面向终端用户的特殊搜索场景,Typesense 是可以使用的。