关于全文搜索引擎的选择,小型后端项目用 Elasticsearch 合适吗?

知识问答作者:U大使日期:2021-01-25点击:165

周末刚了解到 "全文搜索引擎" 这一概念 —— 传统的关系型数据库,比如 MySQL,一般不适合做关键词搜索,关键字搜索最好配合全文搜索引擎使用。

在网上搜索 "全文搜索引擎" ,大家推荐的都是 Elasticsearch,一个企业级的搜索引擎。

实际上,我正在开发一个类似 emby 或 plex 的个人媒体服务器,数据量自然不会太大,于是就选择了 sqlite 这一文件型数据库,来存储视频 /音频的元数据。
这种级别的后端应用,自然用不到 Elasticsearch 这么重的工具,也没有数据分析的需求,但还是要解决 "搜索元数据中的关键词" 这一问题。

所以,想向Uclub请教 2 个问题:

  1. 对于小型后端项目,有哪些适合的比较轻量的全文搜索引擎?或者其它解决关键词搜索的方案?
  2. 那些博客应用、小型论坛应用都是怎么解决全文搜索的?

1、数据量小,建议直接 sqlite 自带的全文检索,我用过没问题的。但个人不是很推荐 sqlite 做生产数据库。是否选用 sqlite3 的唯一考量因素是有没有横向扩展的需求,没有的话,即使全文搜索这种需求也可以在 sqlite3 里做,比如用 sqlite3 内建的 FTS5。FTS5 可以索引多个列的,没有任何问题,还能做约束从不同列搜索内容,实现类似谷歌的那种搜索语法。
2、个人服务的话,建议还是免装数据库(暂时就 sqlite 合适),其他所有需要安装的数据库,都不适合备份导出。注意用户群中懂导入导出的恐怕不足 5%,媒体越多,库越大,意味着这个用户前期输入组织的工作量越大,基本不可能在崩溃后重新再组织一次,如果做不到原样回复,那就是一次抛弃型软件。
3、另外,Es 基于 lucene 的 所以可以考虑 lucene。

也可以使用国产的xunsearch,部署方便,建立索引查询速度也很快,没必要用大型的elasticsearch

下一篇       上一篇