使用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"},
}
