吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 836|回复: 16
收起左侧

[求助] 关于数据库中的中文模糊检索探讨

  [复制链接]
枫林落幕 发表于 2022-8-3 15:31
本帖最后由 枫林落幕 于 2022-8-4 08:52 编辑

现在碰到这样的场景,我现在数据库中有近上万中的数据在。他们的格式就是一个中文,一个英文,一个id。
现在开始检索中文,但是他的sql是模糊检索的。应该是%xxx% 。怎么样,能让程序快速的响应出检索的数据


尝试,探讨:(场景做到的是包含查询,那些单边%的场景,我想是sql基础知识,怎么走索引,怎么不走,百度都会有的
1.首先在mysql中%xxx%;这种直接导致索引失效;增加硬件性能也是不能的;现在就是想讨论,关于设计上,性能上,编程上的问题
2.个人的想法,有想过通过将中文转为base64,通过中文分词,然后去匹配检索。
3.还有种,将所有的数据查出来后,将数据放在容器中,通过写小算法的方式,将数据检索出来

想问问各位,可有这方面的经验,对于中文的模糊检索,能够快速的检索出来数据

关于讨论到全文检索那个提出的es。在国产化,安全系数较高的生产环境,这种技术正在被提出怀疑,所以我不打算使用考虑es,这种额外插件似的功能

数据库的考虑,大家可能需要考虑到国产化以及多数据库的切换,设配问题。高阶函数,及特有函数的使用,不太推荐

免费评分

参与人数 3吾爱币 +3 热心值 +2 收起 理由
luyusen15 + 1 用心讨论,共获提升!
HjiaLe02 + 1 + 1 我很赞同!
zhushui + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a397555462 发表于 2022-8-3 15:41
正则表达式走索引吧?
mainblog 发表于 2022-8-3 15:42
第一,先建立对应中文字段索引, 第二,使用专门的索引查询语句。SELECT * FROM 表名 where MATCH(索引的字段) AGAINST ('查询文字')
414269678 发表于 2022-8-3 15:54
现在数据库都支持中文索引了,可以试试
中文字段长的话,还是用es之类的搜索引擎好点吧感觉
披星代月 发表于 2022-8-3 15:59
Elasticsearch 可以了解下
或者用盘古分词、做个分词表,模板查询 的时候就去关联这表的数据,但这样这表的数据同样也会大到爆炸。
Vvvvvoid 发表于 2022-8-3 16:03
最左匹配原则

查询的时候 按 "xx%"
这种的应该会走索引
 楼主| 枫林落幕 发表于 2022-8-3 16:04
Vvvvvoid 发表于 2022-8-3 16:03
最左匹配原则

查询的时候 按 "xx%"

是的,这种将会走索引,就是出现,不使用这种模糊检索,想要的条件就是%xx%
a397555462 发表于 2022-8-3 16:05
instr(列名,关键字)>0
ZC19931204 发表于 2022-8-3 16:08
学习学习
 楼主| 枫林落幕 发表于 2022-8-3 16:10
a397555462 发表于 2022-8-3 16:05
instr(列名,关键字)>0

这是特有高级函数,针对mysql,oracle可能是不错的简单选择,但是在国产化的数据库环境中,例如PostgreSQL或者换到其他第三方数据库,将会导致数据库适配大量工作,不太推荐
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 09:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表