优炫数据库全文检索的实现
2021/12/11 2:20:24
本文主要是介绍优炫数据库全文检索的实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
UXDB支持包括中文在内的多语言全文检索,提供基于自然语言的文本查询能力,内置缺省的分词解析器解析英文,采用zhparser 插件调用 SCWS引擎进行中文分词,实现全文检索,并可按查询相关度排序,支持对短语的搜索和模糊搜索(ux-trgm)。
数据样例
tmp.txt
888,A019,000000428601,0000,00000,"",0000,青岛业务支持中心,20200410,165004,22
888,A019,000000010632,0000,00001,"",0000,电信广场5楼,20200623,083204,23
888,A019,000000428609,0000,00000,"",0000,南京管线维护站,20200410,165004,24
888,A019,000000428637,0000,00000,"",0000,北海市农业办公楼,20200410,165004,25
~100万条
安装全中文检索支持
zhparser是基于Simple Chinese Word Segmentation(SCWS)中文分词库实现的一个扩展
create extension zhparser;
新增检索配置
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
增加标记字典
其中simple为一个字典模板
tALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;
建表语句
create table anlh_tmp(
mandt varchar(20) default '000' not null,
bukrs varchar(20) default '' not null,
anln1 varchar(50) default '' not null,
luntn varchar(20) default '',
lanep varchar(20) default '00000',
anupd varchar(20) default '',
funtn varchar(20) default '',
anlhtxt text default '',
zdate varchar(32) default '00000000',
ztime varchar(32) default '000000',
mykey serial primary key);
导入数据
\copy anlh_tmp from '/home/uxdb/tmp.txt' DELIMITER ',' csv;
建立分词库
create table anlh_ts(mykey int,anlhtxt tsvector);
insert into anlh_ts select mykey,to_tsvector('testzhcfg',anlhtxt) from anlh_tmp;
select count(*) from anlh_tmp where anlhtxt like '%办公室%';
select count(*) from anlh_tmp t join anlh_ts s on t.mykey=s.mykey where s.anlhtxt @@ to_tsquery('testzhcfg','办公室');
查看执行计划
explain select count(*) from anlh_tmp where anlhtxt like '%办公室%';
explain select count(*) from anlh_tmp t join anlh_ts s on t.mykey=s.mykey where s.anlhtxt @@ to_tsquery('testzhcfg','办公室');
进行排名
SELECT anlhtxt, ts_rank_cd(to_tsvector('testzhcfg',anlhtxt),to_tsquery('testzhcfg','办公室') ) AS rank
FROM anlh_tmp
ORDER BY rank DESC
limit 5;
anlhtxt | rank
----------------------------------------------------------------+------
北滘君兰机场办公室外墙光分箱-机场办公室ZHX | 0.2
办公室,二车间办公室 | 0.2
均安鸿达服装公司办公室至鸿达服装办公室基站 | 0.2
凤凰南路59号香洲图书馆3F办公室墙壁 | 0.1
市信息大厦12楼办公室 | 0.1
(5 rows)
最后,把以上SQL引用到用户搜索页即可完成。
-FIN-
这篇关于优炫数据库全文检索的实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南