现在的模糊查询大家都使用什么解决方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Weixiao0725
V2EX    程序员

现在的模糊查询大家都使用什么解决方案?

  •  
  •   Weixiao0725 2022-10-13 08:09:50 +08:00 6507 次点击
    这是一个创建于 1167 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设我有很多文本,给定一段模糊的关键字,查询文本所在的文章和上下文,请问目前有什么合适的查询和存储方案吗?目前已知比较成熟的是基于 elastic search ?
    27 条回复    2022-10-22 10:12:11 +08:00
    zzzzzzzzzy
        1
    zzzzzzzzzy  
       2022-10-13 08:39:51 +08:00
    看你数据量,你用 redis 也能做
    XCFOX
        2
    XCFOX  
       2022-10-13 08:58:12 +08:00
    Weixiao0725
        3
    Weixiao0725  
    OP
       2022-10-13 09:08:09 +08:00 via iPhone
    @XCFOX 请问这个支持中文查询吗?
    Weixiao0725
        4
    Weixiao0725  
    OP
       2022-10-13 09:08:38 +08:00 via iPhone
    @zzzzzzzzzy 数据量大概不到 100G 的文本
    demoshengxw
        5
    demoshengxw  
       2022-10-13 09:23:16 +08:00 via iPhone
    方便还是还是 es ,做好分词直接查就好了
    hyqCrystal
        6
    hyqCrystal  
       2022-10-13 09:27:55 +08:00
    数据量不多的话 mysql 好像也支持了。多的话 上 es 吧
    jiangbo212
        7
    jiangbo212  
       2022-10-13 09:37:11 +08:00
    最近在研究 meilisearch, 你这个数据量感觉在它的查询临界点,可能查询速度相比于官网的会慢点。官网显示是支持中文查询的,相比于 es ,易用性强一点
    limbo0
        8
    limbo0  
       2022-10-13 09:57:49 +08:00
    生产可以用 es, 玩玩可以用 meilisearch
    dddd1919
        9
    dddd1919  
       2022-10-13 10:04:17 +08:00
    elastcisearch
    apache solr ,文本搜索不错
    lmshl
        10
    lmshl  
       2022-10-13 10:24:58 +08:00
    需要相关性和 rank 就走 ES ,不需要的话 PostgreSQL 等数据库内置的全文检索也能做
    lmshl
        11
    lmshl  
       2022-10-13 10:26:48 +08:00
    全文检索引擎几乎是不区分语言的,你需要一款分词器,写入的时候提前分好词向量(一般会带有 for index 选项),查询的时候也是(一般会带有 for search 选项)。然后俩词向量去 match
    xuelu520
        12
    xuelu520  
       2022-10-13 10:35:47 +08:00
    分词+es ,基本满足你的需求
    killva4624
        13
    killva4624  
       2022-10-13 10:37:12 +08:00
    不考虑成本的情况下 ES 最快
    samin
        14
    samin  
       2022-10-13 10:39:08 +08:00
    @hyqCrystal 请问这个量的定义是 ? 边界值是多少 ? 以及对机器性能综合考虑,如何取舍,有经验之谈否 ?
    dayeye2006199
        15
    dayeye2006199  
       2022-10-13 10:42:52 +08:00
    qingshuang
        16
    qingshuang  
       2022-10-13 11:09:31 +08:00
    模糊查询真的很烦,用 MYSQL 不走索引,用 ES 的时候因为分词的原因老是查不到被客户投诉。
    例如客户某个商品编码是 CZ101 就老在那问 我搜 Z1 为什么搜不到啊
    这种大家是怎么解决的呢??
    看了下 ES 里的几种解决方案,性能都特别差
    dzdh
        17
    dzdh  
       2022-10-13 11:23:22 +08:00
    轻量级搜索建议 zincsearch ,兼容 es 部分语法
    algalia 小规模用费用还是能承受的
    sadfQED2
        19
    sadfQED2  
       2022-10-13 12:19:31 +08:00 via Android
    @qingshuang es 直接单字符分词
    winglight2016
        20
    winglight2016  
       2022-10-13 12:32:56 +08:00
    要看你的需求是模糊查询,比如“like %xxx%”,还是语义查询,比如“天气怎么样”,还有语言、分词策略,相似度、全文检索的区别。

    如果是整篇文章的部分内容(精确、少量词汇),ES 比较适合。长句子没有什么特别好的办法,即使语义查找,也有句子长度的限制。
    dusu
        21
    dusu  
       2022-10-13 13:03:35 +08:00 via iPhone
    试试 manticoresearch 有惊喜
    @qingshuang
    leegradyllljjjj
        22
    leegradyllljjjj  
       2022-10-13 13:38:19 +08:00   1
    select * from table1 where cloumn1 like '%v 我 50%'
    yjhatfdu2
        23
    yjhatfdu2  
       2022-10-13 18:03:54 +08:00
    @qingshuang postgreSQL ,使用 pg_bigm 索引插件+like
    Jooooooooo
        24
    Jooooooooo  
       2022-10-13 18:51:00 +08:00
    相比起来, es 会好一些.
    Weixiao0725
        26
    Weixiao0725  
    OP
       2022-10-22 00:57:35 +08:00
    @dusu 这个好像真的很不错,试了下他的中文分词,挺好用的。
    dusu
        27
    dusu  
       2022-10-22 10:12:11 +08:00 via iPhone
    开箱即用
    自定义词库的话
    自己编 icudt 文件就行了
    @Weixiao0725
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1072 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 23:20 PVG 07:20 LAX 15:20 JFK 18:20
    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