DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tino0914
今日帖子: 22
在线用户: 29
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 ww1000 (Delphis) ▲▲▲▲▲ -
普通会员
2022/9/1 16:58:40
标题:
请教一下:如何快速模糊搜索,从Sqlite,2kw记录,text类型 浏览:1662
加入我的收藏
楼主: Sqlite,2kw记录,只有2个字段, id(自增),abc (text类型,20~200中英文utf字符);没有做索引;

使用FrieDAC,FDquery,D10.x

FDquery.open(select id, abc from table where abc like '%合同%' order by id);

现在搜索觉得有点慢,请问各位前辈有什么方法可以提高一些效率。

任何意见建议 先行谢谢!
----------------------------------------------
阳光总在
作者:
男 zhyhero (zhyhero) ★☆☆☆☆ -
盒子活跃会员
2022/9/1 17:01:00
1楼: mormot ?
这个库针对Sqlite做了海量的优化……
----------------------------------------------
z@S7
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/9/1 18:02:50
2楼: mormot是使用zeos连接sqlite3
----------------------------------------------
-
作者:
男 hardnut (麦轲数据管家) ★☆☆☆☆ -
普通会员
2022/9/2 8:24:58
3楼: mormot对SQLite的访问没有什么大优化,只有很薄的一层封装, 就是一个TSQLDatabase, TSQLRequest, 就是直接对API的简单封装
----------------------------------------------
UniKeeper V10.40 -- 您最贴心的个人数据管理助手
作者:
男 hardnut (麦轲数据管家) ★☆☆☆☆ -
普通会员
2022/9/2 8:28:24
4楼: 一楼的这种问题,2千万的数据量.应该不要使用数据库,直接用文件保存吧,再分块使用多线程可能会快点
----------------------------------------------
UniKeeper V10.40 -- 您最贴心的个人数据管理助手
作者:
男 hawke2e (hawke2e) ★☆☆☆☆ -
普通会员
2022/9/2 9:03:25
5楼: 保存成文件,用recoll
----------------------------------------------
软件是什么,相信很多人都说不清。
作者:
男 ww1000 (Delphis) ▲▲▲▲▲ -
普通会员
2022/9/2 10:58:23
6楼: 谢谢楼上各位,

这个文件基本就是一些收集类的信息,现在不断写入,不断增大,
以前用文本文件做,但文件越大要模糊搜索全部就非常麻烦,
故转了Sqlite,但似乎都比较慢,现在模糊搜索一次要2~30秒左右,大小10G,

故看看有没有快速方法没有?
----------------------------------------------
阳光总在
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2022/9/2 11:08:27
7楼: 要查询快只能做   索引  内存换时间
自己采集模糊查询关键词。
如果用正则 有个jit版本可以提速。
https://github.com/pyscripter/Pcre-Jit-Delphi
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 zhyhero (zhyhero) ★☆☆☆☆ -
盒子活跃会员
2022/9/2 11:22:08
8楼: 软件不行堆硬件。
弄32G内存,把10G数据库全预先读到内存去。
再辅以数据库分片,例如每500万个记录一个内存表,用来支撑多线程同时查询(每线程查一个内存表)。

我觉得海量数据这种,靠单一简单的编程思路是够呛了……
----------------------------------------------
z@S7
作者:
男 xxz1314 (xxz1314) ★☆☆☆☆ -
普通会员
2022/9/2 11:34:39
9楼: select id, abc from table where abc like '%合同%' order by id
----------
SQL语句优化 
like 优化
order by 优化
适当可以提高效率~
----------------------------------------------
-
作者:
男 letianwuji (大器晚成) ▲▲▲▲▲ -
普通会员
2022/9/2 11:40:11
10楼: SQLite FTS5虚表全文搜索技术
了解一下
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/9/2 16:28:25
11楼: 不知道开源的文字搜索对于中文的搜索能力如何?
----------------------------------------------
-
作者:
男 simon2000 (西门) ★☆☆☆☆ -
普通会员
2022/9/2 19:02:01
12楼: 10楼说的我以前用过,效果nb,速度足够快,应该能达到你的要求

不过,表要改造下,如果原表不能动,你就再建个表同步数据

只有全文搜索这一条路可行(其他搜索方式均太慢了,我试了好久,全文搜索的速度吊打其他所有,降维打击式的),sqlite支持
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2022/9/2 19:49:59
13楼: FTS模块怎么搞
----------------------------------------------
-
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2022/9/2 22:00:23
14楼: 开源的数据量大的话,现在用Solr挺多的,支持全文索引,只是对中文索引要另外配。当然,你也得用好一点的硬件,否则这么大的数据量速度快不起来。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
男 newbuyer (newbuyer) ★☆☆☆☆ -
普通会员
2022/9/3 9:11:25
15楼: 在字段这么少/查询比较单一/可单线程追加写的大量数据/追求速度, 如果是我的话,会用可扩展为多服务器的多级目录内纯二进制文件(例如1M记录一个文件,并且是已经过最大限度格式转换), 配合适当的缓存机制来做, 内存够的话直接拉进去, 不够的话每次装载一个(可能已缓存的)文件来自己写搜索代码. 甚至向多服务器并发请求聚合结果.

不过楼主选择用sqlite可能现行环境有限制.
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/9/3 10:30:16
16楼: 15 楼的思路很好。
----------------------------------------------
-
作者:
男 kentty (kentty) ★☆☆☆☆ -
普通会员
2022/9/3 10:45:40
17楼: 结构和查询逻辑这么简单的Sqlite数据库,如果是热数据,一点建议:
1. 小幅修改前端的写入逻辑,当数据量超过一定数量后,新建一个数据库文件
2. 现有的big数据文件可以拆分成类似1的多个small数据文件
3. 多数据文件多线程并行查询,聚合查询结果
----------------------------------------------
-
作者:
男 hs_kill (lzl_17948876) ★☆☆☆☆ -
普通会员
2022/9/3 10:55:15
18楼: 拆分成多个文本文件然后并发正则匹配
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
男 letianwuji (大器晚成) ▲▲▲▲▲ -
普通会员
2022/9/3 10:55:51
18楼: AnyTXT Searcher 用的就是 SQLite FTS5虚表全文搜索技术。
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
男 ufo2003 (ufo) ★☆☆☆☆ -
普通会员
2022/9/3 15:24:18
19楼: 楼主可以参考这篇微信团队出的介绍fts5全文搜索的文章,文章里作为测试例子,搜索100万条记录耗时毫秒级的。
http://news.sohu.com/a/537419032_100093134
----------------------------------------------
delphi
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行121.0938毫秒 RSS