V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
skinny
V2EX  ›  PostgreSQL

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

  •  
  •   skinny · 71 天前 · 825 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。

    准备提供一个全文搜索功能,目前要求不是特别高,实际需求和机器配置非常有限,不想上 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 自带的全文搜索功能一样……

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

    3 条回复    2021-09-29 17:06:59 +08:00
    stimw
        1
    stimw  
       71 天前 via Android
    sonic
    zoharSoul
        2
    zoharSoul  
       71 天前
    @stimw #1 这玩意是不是好像不支持中文分词. 只能一个字一个字的分
    skypyb
        3
    skypyb  
       70 天前   ❤️ 1
    我感觉用自带的也不是很好控制, 不如交给程序进行。
    我以前专门写过一篇博客:
    [关于 PostgreSQL 全文检索的实战 —— 中文分词、查询、索引、权重、排序]( https://www.skypyb.com/2020/12/jishu/1705/)
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1356 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:59 · PVG 01:59 · LAX 09:59 · JFK 12:59
    ♥ Do have faith in what you're doing.