• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ericgui
V2EX  ›  程序员

全文搜索(full text search)有什么好一点的低成本解决方案?

  •  
  •   ericgui · Dec 4, 2022 · 14977 views
    This topic created in 1432 days ago, the information mentioned may be changed or developed.

    elastic search ,自己搭建太麻烦了,买服务太贵

    实在不行只能买服务了,我可没那功夫搭建

    但太贵了

    彦祖们能否有什么推荐么

    数据量很小,目前只有 15K 条数据,即便将来增长,也不会超过 1M

    62 replies  •  2023-01-11 20:10:17 +08:00
    ktqFDx9m2Bvfq3y4
    ktqFDx9m2Bvfq3y4
    Dec 4, 2022 via iPhone
    2
    我之前也是买官方服务但比较贵,后来我 docker 自建( k3s 托管),挺稳定的,还便宜。

    我数据不多,主要是用来搜索电商产品。
    ericgui
    ericgui
    OP
    Dec 4, 2022
    3
    @Chad0000 诶,有道理哦
    QKgf555H87Fp0cth
    QKgf555H87Fp0cth
    Dec 4, 2022
    4
    algolica 免费的够吗
    ericgui
    ericgui
    OP
    Dec 4, 2022
    5
    @rushssss 谢谢,sonic 这个看着很不错
    leavic
    leavic
    Dec 4, 2022
    6
    leavic
    leavic
    Dec 4, 2022
    7
    搞错了,我还以为你要的是桌面搜索。。
    ericgui
    ericgui
    OP
    Dec 4, 2022
    8
    @likunyan 不够,恰好很尴尬,我这边有不到 2 万条数据,algolica 免费的只能 1 万,但 algolica 确实比 elastic search 便宜多了
    kran
    kran
    Dec 4, 2022 via Android
    9
    这么小的数据量,应该不需要这些服务。自己在内存里建索引就好吧
    ericgui
    ericgui
    OP
    Dec 4, 2022 via Android
    10
    @kran 能否给个关键词?我搜搜怎么做
    demoshengxw
    demoshengxw
    Dec 4, 2022 via iPhone❤️1
    11
    es 用 docker 很快就能部署上啊,全文搜索 es 还是好用
    optional
    optional
    Dec 4, 2022 via iPhone
    12
    pg
    kran
    kran
    Dec 4, 2022 via Android
    13
    @ericgui 自然语言处理,关键词提取,反向索引。
    如果用轻量级服务,可以看看 arangodb ,支持全文检索,并且可排序
    pengtdyd
    pengtdyd
    Dec 4, 2022
    14
    直接用 mysql 不行吗,我感觉优化优化也将就用。
    dcoder
    dcoder
    Dec 4, 2022
    15
    @ericgui
    维护 ES 就是麻烦, 用 docker/k8s 的话...得用 stateful container 来存 ES 的数据...??

    你不关心多机 scale 问题的话, 可以先试试单机 PostgreSQL, 它也有 full text search
    reeco
    reeco
    Dec 4, 2022 via iPhone
    16
    pg 是你最好的选择
    DTCPSS
    DTCPSS
    Dec 4, 2022
    17
    Postgresql
    kidlj
    kidlj
    Dec 4, 2022
    19
    Postgresql
    dzdh
    dzdh
    Dec 4, 2022
    21
    强烈安利:

    - PostgreSQL 自带,勉强够用

    - 想要类似 ES 的,轻量的,支持 avg/cnt/sum/group 等,中文友好,支持海量数据(<1e 内),不是一股脑全塞到内存的。请移步 https://zincsearch.com/

    - 少量数据(十几百十来万不差钱的) https://www.algolia.com/
    sdshiyan2005
    sdshiyan2005
    Dec 4, 2022
    22
    sqlite 的 fts5?
    czjxy881
    czjxy881
    Dec 4, 2022
    23
    https://nasuyun.com/ 有 6g 免费空间的 Serverless es
    cweijan
    cweijan
    Dec 4, 2022
    24
    es 有哪里麻烦的, 你别搞集群, 直接单机起一个就行
    garfeildma
    garfeildma
    Dec 4, 2022
    25
    Postgre, MySql, Sqlite 都支持 full text search ,如果已经用了这些数据库直接用应该够了
    aru
    aru
    Dec 4, 2022
    26
    ES 直接用 docker 整一个单实例就行了,很简单
    Iamsonny
    Iamsonny
    Dec 4, 2022
    27
    elastic 不是 click 就可以运行的么~~~
    dusu
    dusu
    Dec 4, 2022 via iPhone
    28
    楼主的需求下 manticoresearch 吊打一切
    sunnysab
    sunnysab
    Dec 4, 2022❤️1
    29
    pg 的中文全文检索资料有点老、少,按理说是够用的。之前折腾过一段时间,按照步骤一步步来,但是自定义分词始终无法生效,就弃坑了……

    sonic 和 meilisearch 都是 rust 写的工具,前者只提供一个 index 服务。感觉他们不错。
    同蹲一个解决方案。
    beneo
    beneo
    Dec 4, 2022 via iPad
    30
    有无 go 语言解决方案,带支持中文分词 go 语言解决方案
    liaohongxing
    liaohongxing
    Dec 4, 2022
    31
    go 的用 zinc , rust 用 meilisearch (官方支持中文,用的 jieba 分词) , java 的 es

    es 效果好 , 但是 CPU/内存占用大,4G 左右吧 。轻量的可以用 meilisearch , 毕竟官宣支持中文。
    roundgis
    roundgis
    Dec 4, 2022 via Android
    32
    https://mongoing.com/archives/81357

    我之前也用了類似的方法
    hackpro
    hackpro
    Dec 4, 2022 via iPhone
    33
    Devonthink
    em70
    em70
    Dec 4, 2022
    34
    用 mongodb 储存, 给要搜索的字段创建 TEXT 索引, 支持 TB 级数据量,有大内存就行,其他什么都不用做,全文搜索速度很快,不需要排序的搜索场景都可以满足
    lxwlxc
    lxwlxc
    Dec 4, 2022
    35
    这么小的量,直接用 Lucene ,都不需要部署服务。ES 也是基于他的
    eudore
    eudore
    Dec 4, 2022
    36
    postgress mysql 自带的倒排,或者用开源简化版的全文检索引擎。
    herozzm
    herozzm
    Dec 4, 2022
    37
    docker 部署就算是集群,也是几条命令就全部搞定了
    coymail
    coymail
    Dec 4, 2022
    38
    直接 Lucene 一把梭
    dayeye2006199
    dayeye2006199
    Dec 4, 2022
    39
    数据库自己带的全文搜索
    shelken
    shelken
    Dec 4, 2022 via iPhone
    40
    shelken
    shelken
    Dec 4, 2022 via iPhone
    41
    <a href="https://smms.day/image/6vDEFjVZ9tQcMri" target="_blank"><img src="https://s2.loli.net/2022/12/04/6vDEFjVZ9tQcMri.jpg" alt="IMG_0072.jpeg"></a>
    haonie
    haonie
    Dec 4, 2022
    43
    windows 本地搜索呢?有推荐的开源项目吗? win 自带搜索不好用,listary 、everything 又不能搜索内容,其他的搜索软件也太臃肿,都没有比得上苹果的。
    yazinnnn
    yazinnnn
    Dec 4, 2022
    44
    自建 es 麻烦在哪里....数据量不大直接跑容器里吧
    ksc010
    ksc010
    Dec 4, 2022
    45
    ES 用 docker 很容易 一个 docker-composer 配置文件就可以搭建一个集群
    Jiajin
    Jiajin
    Dec 4, 2022
    46
    es 搭建快的很
    documentzhangx66
    documentzhangx66
    Dec 4, 2022
    47
    全文索引的原理,导致其质量与速度,本质就是拼成本,这玩意哪有什么低成本。

    你要想低成本,要么速度极慢,要么只做热词。

    只做热词会导致非热词信息搜不到,比如某些电商平台,搜历史订单,明明有这个关键词,但就是搜不出来,这就是这个原因。
    timnottom
    timnottom
    Dec 4, 2022
    48
    我收藏了好几个,分享给你:

    - elasticsearch
    - zinc
    - meilisearch
    - typesense
    - sonic


    这些大多基于 go, rust 等新兴语言,特别是基于 go 的,占用资源肯定少一些。

    不过,要我说,好用的肯定是 es
    keenkiller
    keenkiller
    Dec 4, 2022
    49
    es 单点搭建简单的很,不知道楼主在说啥
    WingPig99
    WingPig99
    Dec 4, 2022
    50
    推荐 es
    wangfenjin
    wangfenjin
    Dec 4, 2022
    51
    如果是单机的话,可以用 sqlite3+fts5, 然后我写的这个中文插件 https://github.com/wangfenjin/simple
    makdon
    makdon
    Dec 4, 2022
    52
    如果数据量较小,用的是 Go 的话,可以试试这个
    我们这边业务也是 1w 条左右数据,服务启动的时候就读 DB 然后用这个库做内存索引
    不过实践发现可能花点钱买个公有云的 elastic search 的会省心很多
    https://github.com/blevesearch/bleve
    URgoy
    URgoy
    Dec 4, 2022 via iPhone
    53
    马
    Aloento
    Aloento
    Dec 4, 2022
    54
    对于全文搜索,您可以考虑使用 Apache Solr 或 Apache Lucene 。它们都是开源的全文搜索工具,而且比较容易使用。它们都提供了许多强大的功能,包括分词、拼写纠错和结果排序,可以帮助您快速、高效地进行全文搜索。

    此外,如果您的数据量很小,您可以考虑使用 SQLite 数据库。SQLite 是一种轻量级的关系数据库,它可以运行在各种平台上,包括桌面和移动设备。它非常容易上手,而且可以满足您的数据量要求,即使将来数据量增长到 1M 。

    总而言之,对于您的需求,Apache Solr 或 Apache Lucene 和 SQLite 数据库都是不错的选择。它们都是开源的,易于使用,并且提供了许多强大的功能,可以帮助您进行全文搜索。此外,它们都是低成本的解决方案,可以满足您的需求。
    CX
    CX
    Dec 4, 2022
    55
    sphinx ?不吃配置,只是搭建维护比较麻烦
    magnetar
    magnetar
    Dec 5, 2022
    56
    说下我用过的吧,
    sphinx 优点:配置简单,索引快(但是分词太细 2 千万需要 7 分钟左右),最多占用 1g 内存,php 、python 对接方便,缺点:增量更新麻烦,搜索后返回 id 需要走一遍数据库查询,
    typesense:我索引到 1 千万的时候崩了,问题应该是内存不够,
    zinc 优点:配置简单,不怎么占用内存,语言对接方便,支持大部分 es 的语法,缺点:需要固态硬盘,不知道是不是我配置的问题,占用磁盘空间超级大(有相关配置但是设置了不生效)。
    meilisearch:看了文档直接放弃,没有尝试。
    sonic:跟 sphinx 差不多,没有尝试
    elasticsearch:现在在用的,缺点就是吃内存(也还好,数据没上亿单机还是没什么压力),配置繁琐。
    其实很简单的问题,搜索要想玩的花就上 es ,何况你说后面数据量要上 M ,大数据就直接无脑 es 了啊,
    jinsongzhao
    jinsongzhao
    Dec 5, 2022
    57
    看来开始遍地开花时期了。数据库自带的; Lucene 的 java 系列; go ; rust; C++应该也有(比如 AnyTxt )。不知道哪家方案接近技术完善了,如果没有出现完善的(多语种支持),那还是最低成本数据库自带的跑跑看了
    brader
    brader
    Dec 5, 2022
    58
    最低成本的应该还是直接用现有的 mysql 的 full text 索引,我的项目中也在大量使用,这个东西简单使用完全没问题的,你可以先尝试,而且它的尝试成本低到几乎没有。
    010203kk
    010203kk
    Dec 6, 2022
    59
    ReSearch--考据级搜索引擎微服务系统
    https://github.com/liaoran123/research
    javafans
    javafans
    Dec 17, 2022
    60
    nasuyun.com 不香吗
    ENNRIaaa
    ENNRIaaa
    Dec 21, 2022
    61
    Meilisearch ,使用 Rust 开发的搜索引擎,并且对中文搜索很友好,不需要额外的配置,可以参考下。
    temp178
    temp178
    Jan 11, 2023
    62
    同求。主要还是小公司的场景下,用啥服务都束手束脚的,要么没钱,要么没经历维护(毕竟多维护一个服务,还要保证稳定性),准备实在不行就基于现有的存储自己写一个简单的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5308 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 154ms · UTC 03:37 · PVG 11:37 · LAX 19:37 · JFK 22:37
    ♥ Do have faith in what you're doing.