Repolode
ankane

ankane/searchkick

为 Rails 模型添加智能全文搜索的 Ruby 库,底层基于 Elasticsearch 或 OpenSearch。

Star
6,720
Fork
761
未关闭 Issue
10
最近提交
11天前

这是什么?

Searchkick 是一个 Ruby gem,可将 Active Record 和 Mongoid 模型连接到 Elasticsearch 或 OpenSearch。开发者只需在模型中声明一行代码,即可为其添加全文搜索。它支持词干提取、特殊字符、多余空格、拼写错误和自定义同义词,例如搜索 "tomatoes" 能匹配 "tomato",搜索 "zuchini" 能匹配 "zucchini"。

查询采用可链式调用、类似 SQL 的接口,涵盖过滤、排序、分页、权重提升、聚合、高亮、自动补全、搜索建议和地理位置搜索。索引可以同步、异步、通过 Redis 队列或手动方式更新,并支持不停机的并行重建索引。该库兼容 Elasticsearch 8、9 以及 OpenSearch 2、3。

核心功能

  • 01开箱即用的词干提取、拼写容错和自定义同义词
  • 02类似 SQL 的链式查询,支持 where、order、limit 和 offset
  • 03提供自动补全、"你是不是要找" 建议和结果高亮
  • 04支持聚合,以及按字段、时效、距离或用户进行权重提升
  • 05支持地理位置和地理形状搜索
  • 06支持不停机重建索引,可选异步、队列或并行模式

适用场景

  • 为 Rails 电商或商品目录应用添加商品搜索
  • 为 Active Record 或 Mongoid 的大型数据模型实现自动补全
  • 利用聚合为搜索结果提供分面筛选
  • 为餐厅、门店等提供基于位置的搜索

快速上手

  1. 1

    通过 Homebrew 安装并启动 OpenSearch

    brew install opensearch && brew services start opensearch
  2. 2

    在 Gemfile 中添加 searchkick 以及 Elasticsearch 或 OpenSearch 客户端

    gem "searchkick"
  3. 3

    在模型中添加 searchkick 并为其数据建立索引

    Product.reindex

使用前须知

  • 需要运行中的 Elasticsearch 或 OpenSearch 服务器。
  • Elasticsearch 7 和 OpenSearch 1 需要使用旧版本 5.5.2。

标签

常见问题

searchkick 是什么?
为 Rails 模型添加智能全文搜索的 Ruby 库,底层基于 Elasticsearch 或 OpenSearch。 Searchkick 是一个 Ruby gem,可将 Active Record 和 Mongoid 模型连接到 Elasticsearch 或 OpenSearch。开发者只需在模型中声明一行代码,即可为其添加全文搜索。它支持词干提取、特殊字符、多余空格、拼写错误和自定义同义词,例如搜索 "tomatoes" 能匹配 "tomato",搜索 "zuchini" 能匹配 "zucchini"。
searchkick 可以免费使用吗?用的什么许可证?
searchkick 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
searchkick 还在维护吗?
活跃维护中。searchkick 最近一次提交是在 2026年10月27日。
searchkick 适合用来做什么?
为 Rails 电商或商品目录应用添加商品搜索 为 Active Record 或 Mongoid 的大型数据模型实现自动补全 利用聚合为搜索结果提供分面筛选 为餐厅、门店等提供基于位置的搜索
searchkick 怎么安装和运行?
通过 Homebrew 安装并启动 OpenSearch: brew install opensearch && brew services start opensearch 在 Gemfile 中添加 searchkick 以及 Elasticsearch 或 OpenSearch 客户端: gem "searchkick" 在模型中添加 searchkick 并为其数据建立索引: Product.reindex
在哪里获取 searchkick?
源代码和安装说明在 GitHub 上:https://github.com/ankane/searchkick

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目