Tantiny 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Tantiny 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Tantiny 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Ruby SHELL Rust
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发搜索引擎
开源组织
地区 不详
投 递 者 白开水不加糖
适用人群 未知
收录时间 2022-06-30

软件简介

Tantiny是一个基于 Tantivy 的 Ruby 的最小化全文搜索库。当你手头的任务需要全文搜索,但配置一个完整的分布式搜索引擎会比任务本身花费更多的时间时,它是非常好的选择。

即使你已经在你的项目中使用了这样的引擎(实际上这是很有可能的),使用 Tantiny 仍然可能更容易,因为与 Solr 和 Elasticsearch 不同,它不需要任何东西来工作(没有单独的服务器或进程或其他什么),它是纯粹的可嵌入的。所以,当你发现自己在使用你所选择的搜索引擎会很麻烦/不方便,或者需要额外的设置时,你总是可以回到一个快速和肮脏的解决方案,但还是很灵活和快速。

Tantiny 并不完全是对 Tantivy 的 Ruby 绑定,但它试图接近。主要理念是提供对 Tantivy 倒排索引的低级访问,但具有漂亮的 Ruby 风格的 API、合理的默认设置和附加功能。

示例:

index = Tantiny::Index.new("/path/to/index") { text :description }

index << { id: 1, description: "Hello World!" }
index << { id: 2, description: "What's up?" }
index << { id: 3, description: "Goodbye World!" }

index.reload

index.search("world") # 1, 3

Tantiny是线程安全的,这意味着你可以在线程之间安全地共享索引的单一实例。你还可以生成可以写入和读取同一索引的单独进程。然而,虽然从索引中读取应该是并行的,但向其写入却不是。每当你调用事务或任何其他修改索引的操作(即<<和删除),它将在操作期间锁定索引或等待另一个进程或线程释放锁定。唯一的例外是当另一个进程的索引具有独占编写器在某处运行时,在这种情况下修改索引的方法将立即失败。

因此,如果你想避免阻塞调用,最好是有一个写入进程和多个读取进程。正确的方法是在初始化索引时将 exclusive_writer 设置为 true。

index = Tantiny::Index.new("/path/to/index", exclusive_writer: true) {}

这样 index writer 只会被获取一次,这意味着它的内存和索引线程也只会被分配一次。否则每次执行写入操作时都会获取一个新的 index writer。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
5 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部