mysql 能不能对中文分词检索? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zjsxwc
V2EX    程序员

mysql 能不能对中文分词检索?

  •  
  •   zjsxwc
    zjsxwc 2017 年 6 月 20 日 7223 次点击
    这是一个创建于 3136 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mysql 能不能对中文分词检索? 要对 item 条目表下的 detail 字段检索,like 不能满足需求。。有什么方法能最快解决这问题?

    能不用 sphinx、els 之类的最好

    第 1 条附言    2017 年 6 月 21 日
    折腾了 1 天,最后使用 ES 最爽,完美解决需求,谢谢大家
    18 条回复    2020-09-05 15:50:47 +08:00
    yangguoshuai
        1
    yangguoshuai  
       2017 年 6 月 20 日
    先分词,然后编码(比如类似 base64 替换几个字符) 然后全文搜索。。
    zjsxwc
        2
    zjsxwc  
    OP
       2017 年 6 月 20 日
    看了下 PostgreSQL 原生支持全文检索,我准备把这个表同步到 PostgreSQL 上来检索。。

    https://www.opsdash.com/blog/postgres-full-text-search-golang.html
    ming2050
        3
    ming2050  
       2017 年 6 月 20 日 via iPhone
    可以原生中文分词
    ngram
    ming2050
        4
    ming2050  
       2017 年 6 月 20 日 via iPhone
    很笨拙的算法,但很有用
    zwh8800
        5
    zwh8800  
       2017 年 6 月 20 日
    用专业的工具做专业的事,分词搜索还是用 es 吧
    zjsxwc
        6
    zjsxwc  
    OP
       2017 年 6 月 20 日
    @zwh8800

    尝试了下 es 的 5 分钟教程,蛮简单的,es 有什么中文分词推荐的?
    leopku
        7
    leopku  
       2017 年 6 月 20 日
    @zjsxwc IK

    mmseg 在某些场景表现也不错

    根据你的场景多测试总结
    Hieast
        8
    Hieast  
       2017 年 6 月 20 日 via Android
    @zjsxwc 一开始 smartcn 吧
    wdlth
        9
    wdlth  
       2017 年 6 月 20 日
    我们是用 Solr 和 ES 来做的,这些更专业,也更好扩展。
    TangMonk
        10
    TangMonk  
       2017 年 6 月 20 日 via Android
    @zjsxwc pg 要下插件才支持中文检索
    aqqwiyth
        11
    aqqwiyth  
       2017 年 6 月 20 日
    全转成拼音。。。走 fulltext index 逃:)
    PythonAnswer
        12
    PythonAnswer  
       2017 年 6 月 21 日 via Android
    pg 能满足个人需求吗?以前折腾过 es 感觉还是麻烦了
    zjsxwc
        13
    zjsxwc  
    OP
       2017 年 6 月 21 日 via Android
    原来 mysql 本身就支持中文分词与全文搜索,我就不折腾了。

    https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html
    dangyuluo
        14
    dangyuluo  
       2017 年 6 月 21 日
    上 ES,免费的没看到有更简单的方案的了。
    cstj0505
        15
    cstj0505  
       2017 年 6 月 21 日
    @zjsxwc 是的,postgrsql 配合结巴分词非常好用。

    再弄一个自己家的分词词库,美滋滋,不比任何人的差
    reus
        16
    reus  
       2017 年 6 月 21 日
    用 pg_trgm 扩展,建 gist 或者 gin 索引也差不多了
    reus
        17
    reus  
       2017 年 6 月 21 日
    没看到是中文,那不能用 pg_trgm
    KalaSearch
        18
    KalaSearch  
       2020 年 9 月 5 日
    MySQL 和 PG 本身都支持全文索引和分词,分词的方式有直接切 ngram (N 可选,索引会大 N 倍)或者用一些分词的插件。但问题是 MySQL 和 PG 都不是设计用来做搜索的,因此非要强用会比较拧巴。

    而 ES 有不少分词用的插件,比较各种分词的效果(索引分词效果和搜索分词效果)会需要比较多的上下文知识。通常 Analyzer 和 Query analyzer 必须用同样的分词器,但也会造成有的时候某个词就是搜不出来的情况。

    预算允许的话,自荐下我们做的卡拉搜索,啥也不用配置,接上 API 瞬间开搜。速度在我们的 benchmark 上比优化过的 ES 还快 10 倍左右
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1489 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 16:49 PVG 00:49 LAX 08:49 JFK 11:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86