Excel导入时,一个简单的匹配中文外键的方法

devtools/2024/9/24 15:30:06/

Excel导入时,外健往往只能用中文导入,在代码中,尝试用中文去匹配外建的id然后绑到要导入的数据中,这样一个,外健中文就必须和表里面的一模一样,但在实际中,导入的名称与表里存的名称总有少量字不同的差异,导致不能成功匹配到外健,如下所示:

导入数据Excel内容:
user_name office_id
张三 民主党派

office表数据:
1 民主党派管理部

用户表需正确存储的数据:
user_name office_id
张三 1

根据上面场景,作了下面这个经验外健匹配工具,原理也简单,算一下目标匹配字符与需要匹配字符串之间匹配的百分比,该方法较简单,存在误判率。需要手工校正。但整体还是可行的。在不同的项目中有过验证。也可以提高几个经验数字来提高匹配的准确率。具体使用可以视导入数据的重要程度、敏感程度等不同场景来决定。当然喽,也可直接新增一个外键数据,比如上面,再加一个民主党派的部门,缺点是会造成数据重复。这个就不提了。

java">  // sourceStr=民主党派领域--> targetStr=民主党派private boolean matchWithRate(String sourceStr, String targetStr) {// 有为空的,没有匹配的必要了if (ZYStrUtils.isAnyNull(sourceStr, targetStr)) {return false;}// 相等,直接匹配成功if (sourceStr.equals(targetStr)) {return true;}// 原字符太短了,失去匹配的意义,3是个经验长度if (sourceStr.length() < 3) {return false;}// 变成单个字符集合// [民,主,党,派]List<String> items = ZYStrUtils.strToChars(targetStr);int i = 0;for (String item : items) {// 原字段包含了单个字符if (sourceStr.contains(item)) {i++;}}if(i==0){return false;}// 计算匹配率BigDecimal beNum = new BigDecimal(items.size());BigDecimal num = new BigDecimal(i);BigDecimal num100 = new BigDecimal(100);BigDecimal divide = num.divide(beNum, BigDecimal.ROUND_HALF_DOWN, 2);BigDecimal multiply = divide.multiply(num100);double v = multiply.doubleValue();// 超过60%的匹配率,60也是个经验数字  如 民主党派领域--> 民主党派是匹配的return v > 60;}

http://www.ppmy.cn/devtools/116562.html

相关文章

使用CUBE_MX使用I2C通信,实现对EEPROM的读写

一、使用CUBE_MX配置 1.配置I2C 2.配置USART1 3.重中之重(在KEIL5打开串口使用的库) 二、KEIL5配置 #include "main.h" #include "i2c.h" #include "gpio.h" #include "usart.h"#include <stdio.h>void SystemClock_Config(vo…

html实现好看的多种风格手风琴折叠菜单效果合集(附源码)

文章目录 1.设计来源1.1 风格1 -图文结合手风琴1.2 风格2 - 纯图片手风琴1.3 风格3 - 导航手风琴1.4 风格4 - 双图手风琴1.5 风格5 - 综合手风琴1.6 风格6 - 简描手风琴1.7 风格7 - 功能手风琴1.8 风格8 - 全屏手风琴1.9 风格9 - 全屏灵活手风琴 2.效果和源码2.1 动态效果2.2 源…

Elasticsearch在大数据处理中的优势

Elasticsearch 在大数据处理中的优势主要体现在以下几个方面&#xff1a; 1. 分布式架构 水平扩展&#xff1a;Elasticsearch 设计为分布式系统&#xff0c;可以轻松地通过增加节点来水平扩展&#xff0c;处理 PB 级别的数据。数据分片和复制&#xff1a;数据自动分片并跨多个…

我们一般使用的家庭宽带支持udp吗

大多数家庭宽带服务通常支持UDP协议&#xff0c;因为UDP是互联网协议套件中的一个重要部分&#xff0c;广泛应用于视频会议、在线游戏、实时语音通话等实时应用中。以下是一些常见情况&#xff1a; 1. 家庭宽带服务 大部分ISP&#xff08;互联网服务提供商&#xff09;&#…

【大语言模型_1】VLLM部署Qwen模型

1、模型下载&#xff1a; 魔塔社区&#xff1a;魔搭社区 huggingface&#xff1a;https://huggingface.co/Qwen 2、安装python环境 1、python官网安装python 【推荐要3.8以上版本】 2、安装vllm模块 3、启动模型 CUDA_VISIBLE_DEVICES0,1 /root/vendor/Python3.10.12/bin/pytho…

基于BERT的文本分类模型,结合了TextCNN网络结构

一个基于BERT的文本分类模型,并结合了TextCNN网络结构来进一步增强特征提取能力。代码的主要组件包括BERT模型的加载、卷积神经网络(CNN)部分的定义、特征融合以及最终的分类层。以下是代码的详细解析: 1. 导入必要的库和函数 from bert4keras.backend import keras, set…

加固与脱壳01 - 环境搭建

虚拟机 VMWare 多平台可用&#xff0c;而且可以直接激活&#xff0c;需要先注册一个账号 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro KALI 类Ubuntu系统&#xff0c;官方提供了 vmware 版本&#xff0c;直接下载就可以使用。…

【代码随想录训练营第42期 Day59打卡 - 图论Part9 - Bellman-Ford算法

目录 一、Bellman-Ford算法 定义 特性 伪代码实现 二、经典题目 题目&#xff1a;卡码网 94. 城市间货物运输 I 题目链接 题解&#xff1a; Bellman-Ford算法 三、小结 一、Bellman-Ford算法 定义 Bellman-Ford算法是一个迭代算法&#xff0c;它可以处理包含负权边的…