1.为什么需要数据库分词查询
假设有一个数据库表,表中有一个title字段
table1 假如有300万的数据
id为主键,title也设置了索引
id | title |
1 | 这是计算机,和计算机相关,电脑相关 |
2 | 这个标题是数据库,与专利数据库有关系 |
3 | 这个标题是与淘宝user数据库 |
... | ................................................... |
假如我们需要通过title中的某些字段去进行查询,如果不分词查询,那么这样的缺点如下
- 查询速度上的问题,如果我们 想查询title中 有 数据库 的字段的所有内容
我们只能用 select * from table1 where title like '%数据库%'
注意: like %xxx% 这样查询,将会是没有索引的查询,查询的速度会非常的慢,40万的数据,这样查询需要的时间是用 = 查询的几千倍
使用like'%%' 速度非常慢,在需要大量查询的时候,性能上会出现很大的问题
2. 查询的准确性问题,假如我们想查询有 专利数据库 的字段,但是,我们如果打错了,打成了查询 '专利的数据库',多了一个'的'字,
查询的sql 语句为 select * from table1 where title like '专利的数据库'
这样,我们是查询不到id=2的这一条数据的
如果使用分词查询,上述问题将会得到解决
我们将关键字进行分词,建立关键字与id的关系,同时建立索引
比如我们将title进行分词,得到如下的表(注:下表我只列出id=2的分词部分)
keywordsearch1表 id为主键,keyword设置索引
id
|
keyword
|
......
|
xxxxxxx
|
2
|
标题
|
2
|
数据库
|
2
|
专利
|
2
|
关系
|
.......
|
xxxxxxxxx
|
select * from table where id in(select id from keywordsearch1 where keyword='数据库')
或者程序中,先在分词表中查询出id,再用一个for循环,循环select * from table where id =xxx
这样一来,查询都是有索引的,速度会非常的迅速.速度问题解决了
2. 对于准确度问题,比如搜索
专利的数据库
程序会先和分词的方法一样,将其分成
专利、数据库 我们查询的时候
就分别keywordsearch1表去查询这两个对应的id,取得他们的交集,然后再根据id去主表中查询相应的数据,这样,就保证了我们能够得到我们想要的数据了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2010-07-06 远程桌面、远程控制的实现原理
2009-07-06 shtml我几乎要忘了的东西
2007-07-06 什么是CMS系统