# Typesense 使用场景
我们最初构建 Typesense 主要是为了打造一个针对快速、容错全文搜索优化的搜索引擎。
然而,令我们惊喜的是,用户们开始将其用于搜索之外的许多有趣场景。 根据用户反馈,我们已经能够更好地支持其中一些使用场景。
# 适用场景
以下是 Typesense 的一些典型应用场景(持续更新中):
- 支持容错的 模糊即时搜索,用于实现 自动补全 搜索框和 搜索结果 页面
- 分面导航和浏览体验,用户无需输入关键词,而是直接通过筛选多个属性来逐步缩小范围找到目标文档(例如:https://ecommerce-store.typesense.org/ (opens new window))
- 作为 地理分布式缓存,将数据放置在靠近用户的位置。由于您已将数据快照发送给 Typesense,可以直接从地理分布式 Typesense 集群获取文档,该集群会将请求路由到离用户最近的节点,从而降低延迟,而无需访问可能位于单一地理区域的主数据库。
- 使用向量搜索 (opens new window)查找相似文档。"相似性"可以由您构建的任何 ML 模型定义,您可以将模型输出(向量)索引到 Typesense 中,然后进行最近邻搜索。 通过这种方式,可以实现个性化推荐、视觉搜索、语义搜索、相似性搜索等功能。
- 多租户搜索,其中某些记录/字段只能被特定用户组访问(例如登录用户、管理员、特定付费计划的用户等)
- 联邦搜索,在多个索引上同时执行搜索,并将结果并排展示给用户。
- 地理搜索,搜索/排序与给定经纬度邻近的记录。
- 语义搜索,用户可以输入概念相关的关键词,Typesense 会从您的数据集中返回结果,即使该确切关键词不存在。例如,用户搜索"ocean"而您的数据集中只有"sea"这个关键词,语义搜索仍能检索到包含"sea"的相关结果。
- 为 基于聊天的 LLM(如 ChatGPT)提供长期记忆。Typesense 的向量搜索和混合搜索功能可以让聊天 LLM 根据您的 JSON 数据集中的信息回答用户问题。利用这一点,您可以在数据集上构建对话式聊天机器人。
- 利用 Typesense 返回的聚合分面指标,为数据可视化(如图表和表格)提供支持。
如果您将 Typesense 用于其他场景,欢迎在我们的 Slack 社区 (opens new window) 中告诉我们。
# 不适用场景
以下列举了一些我们不建议使用 Typesense 的情况:
不应将 Typesense 用作主数据存储(即存储数据的唯一副本)。
Typesense 设计为次级数据存储。这意味着您应该使用另一个主数据库来存储数据的原始副本,作为应用程序写入数据的目标。然后您可以将数据同步到 Typesense 中,以支持上述某个用例。
通常不适合用于搜索应用程序日志。
这是因为日志数据量庞大,根据日志数据集的大小,将日志存储在内存中可能会造成高昂成本。此外,日志通常不需要即时输入即搜索的体验(而这正是 Typesense 优化的方向)。也就是说,我们确实有一些用户希望在其应用的 UI 中展示部分用户生成的日志供搜索/浏览,对于这种面向终端用户的特殊搜索场景,Typesense 是可以使用的。