miller
发布于

使用golang 全文搜索引擎 zincsearch

全文搜索引擎有许多,其中最出名的是elasticsearch, 无论是性能还是体验都是最顶尖的,但是对小应用来不友好,因为小应用的硬件资源比较少,所以能够通过库/模块的方式内置在应用中会是比较好的选择,就像sqlite3一样。

golang版本轻量级的 zincsearch(内置搜索库 bluge)
zin自带ui页面(written in vue)

zincsearch 现在还处于GA(General Availability) and will be marked as production ready at v1.0.0 .

其他类似全文搜索库

  • typesense
  • melisearch (rust)
  • redissearch

倒排索引:

假设有以下文本, 每行是一篇文章

文章1 hello world
文章2 hello china
文章3 hello hunan

如果我们要搜素那篇文章包含hello, 我们可以遍历每篇文章然后依次搜索,很显然这是一个比较低效的做法,如果有10w篇文章,每次搜索都遍历10w遍,那肯定是无法接受的,所以有人提出了倒排索引。

index := map[string][]string{
  "hello": []string{"文章1", "文章2", "文章3"},
  "world": []string{"文章1"},
  "china": []string{"文章2"},
  "hunan": []string{"文章3"},
 }

原文

浏览 (868)
点赞
收藏
评论