skinny

PostgreSQL 的中文全文搜索的支持有什么扩展推荐吗?使用实际体验如何 ?

  •  
  •   skinny · Sep 28, 2021 · 3595 views
    This topic created in 1711 days ago, the information mentioned may be changed or developed.

    准备提供一个全文搜索功能,目前要求不是特别高,实际需求和机器配置非常有限,不想上 ElasticSearch & Lucene 这么重的家伙,但是 PostgreSQL 内置默认的全文搜索只支持字母语言,像中文需要额外安装或启用扩展。

    经过搜索,发现 5 个扩展:zhparser,pg_jieba,PGroogna,pg_trgm 以及 pg_bigm 。

    搜索到的文章信息里:

    • 提得比较多的很古早的 zhparser 和 pg_jieba 已经开发不活跃了;
    • PGroonga 开发非常活跃,支持所有语言,还有一堆很好的功能,但是有一个可大可小的毛病:不是安全崩溃的,如果更新期间 PostgreSQL 服务器崩溃,就极可能导致索引损坏,而一旦索引有损坏就得全部重新创建索引;
    • pg_trgm 是 PostgreSQL 自带的,但需要手动启用,PGroonga 介绍里说这个东西需要修改源代码才能支持全部语言,但是我没有在 PostgreSQL 官方文档看到相关说明,也不知道这个“不改代码不支持全部语言”会对我有多大影响。
    • pg_bigm 也支持全部语言,但是由于需要 recheck,很多时候会非常慢,禁用 recheck 又会引起别的问题。

    这全文搜索方面的资料都好少,就好像没人用 PostgreSQL 自带的全文搜索功能一样……

    你们有什么推荐和体验啊?

    4 replies    2024-05-14 10:24:42 +08:00
    stimw
        1
    stimw  
       Sep 28, 2021 via Android
    sonic
    zoharSoul
        2
    zoharSoul  
       Sep 28, 2021
    @stimw #1 这玩意是不是好像不支持中文分词. 只能一个字一个字的分
    skypyb
        3
    skypyb  
       Sep 29, 2021   ❤️ 1
    我感觉用自带的也不是很好控制, 不如交给程序进行。
    我以前专门写过一篇博客:
    [关于 PostgreSQL 全文检索的实战 —— 中文分词、查询、索引、权重、排序]( https://www.skypyb.com/2020/12/jishu/1705/)
    wzw
        4
    wzw  
       May 14, 2024
    @skypyb 2 年了, 还是用这个方案吗? 目前跑的怎么样, 数量级是多少, 谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2939 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 06:43 · PVG 14:43 · LAX 23:43 · JFK 02:43
    ♥ Do have faith in what you're doing.