Typesense

Typesense

C++ 编写的开源搜索引擎,主打拼写容错与低延迟检索

核心功能

Typesense 是用 C++ 编写的开源搜索引擎,服务端以 GPL v3 发布。它是单一二进制、无运行时依赖,指定 --data-dir 与 --api-key 后在 8108 端口提供 REST 接口。数据按 collection 组织并需声明字段类型,查询用 query_by 指定字段。

功能亮点

结构化集合

建 collection 先声明字段类型,查询用 query_by 指定

零依赖部署

一条 docker run 命令即可起服务,/health 返回 ok

排序可控

集合可设默认排序字段,查询时再用 sort_by 覆盖次序

集群与托管

多节点用 Raft 组高可用集群,托管版按每集群每小时 $0.03 计费

适用场景

• 电商与内容站点的即输即搜
• 文档站搜索,替代托管搜索服务
• 数据需自持的站内检索场景
• 按地理位置过滤和排序的检索

安装配置

bash
Docker:
export TYPESENSE_API_KEY=xyz
mkdir "$(pwd)"/typesense-data
docker run -p 8108:8108 -v"$(pwd)"/typesense-data:/data typesense/typesense:30.2 --data-dir /data --api-key=$TYPESENSE_API_KEY --enable-cors

macOS(Homebrew,需 Ventura 13 及以上):
brew install typesense/tap/typesense-server@30.2
brew services start typesense-server@30.2

Ubuntu / Debian(DEB 包,需 Ubuntu 20 及以上):
curl -O https://dl.typesense.org/releases/30.2/typesense-server-30.2-amd64.deb
sudo apt install ./typesense-server-30.2-amd64.deb
sudo systemctl start typesense-server.service

健康检查:
curl http://localhost:8108/health

托管版:在 https://cloud.typesense.org 用 GitHub 登录,选配置启动集群后生成 API Key。

使用方法

bash
设置连接信息:
export TYPESENSE_API_KEY='xyz'
export TYPESENSE_HOST='http://localhost:8108'

创建 collection:
curl "${TYPESENSE_HOST}/collections" -X POST \
  -H "Content-Type: application/json" \
  -H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" -d '{
    "name": "books",
    "fields": [
      {"name": "title", "type": "string"},
      {"name": "authors", "type": "string[]", "facet": true},
      {"name": "publication_year", "type": "int32", "facet": true},
      {"name": "ratings_count", "type": "int32"},
      {"name": "average_rating", "type": "float"}
    ],
    "default_sorting_field": "ratings_count"
  }'

批量导入 JSONL 文档:
curl "${TYPESENSE_HOST}/collections/books/documents/import" -X POST \
  -H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
  --data-binary @/tmp/books.jsonl

搜索:
curl -H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
  "${TYPESENSE_HOST}/collections/books/documents/search?q=harry+potter&query_by=title&sort_by=ratings_count:desc"

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标Typesense
价格免费
开源
上手难度入门

相关工具

优点

  • 服务端是单一二进制且无运行时依赖,一条 docker run 就能起完整服务
  • collection 需显式声明字段类型与 facet,索引结构清晰、查询行为可预期
  • 查询用 query_by 精确指定搜索字段,配 sort_by 与 default_sorting_field 控排序
  • Typesense Cloud 按每集群每小时 $0.03 计费,且不限记录数与操作次数

缺点

  • 服务端采用 GPL v3,若改动源码并对外提供服务,合规边界需要自行评估
  • 建 collection 必须先定义字段与类型,schema 变更不如动态映射那样随意
  • 搜索请求必须带 query_by,漏写就查不出结果,和默认全字段检索的习惯不同
  • macOS 原生二进制只支持 Ventura 13 及以上,更老的系统只能改用 Docker
  • Typesense Cloud 免费额度仅首 720 小时集群与 10GB 出网流量,之后按量付费