美文网首页elastic search项目经验
es实现公司简称匹配公司全称

es实现公司简称匹配公司全称

作者: 修行者12138 | 来源:发表于2020-08-03 18:34 被阅读0次

假设XY是某大型集团,集团下有XY金融科技有限公司,XY银行有限公司,XY证券有限公司等子公司

目标:用es实现公司简称匹配到公司全称,且尽可能准确
例如,XY金科能匹配出XY金融科技有限公司,但不希望匹配出XY银行有限公司和XY证券有限公司

如果用mysql的like,肯定达不到目标,因为"金融科技"中,"金"和"科"不连续

如果用ik分词器,XY金科也会匹配出XY银行和XY证券,因为都包含XY


image.png

于是有了另一个方案:
绝大多数情况下,公司简称的每一个字,都在公司全称里出现,且简称里每个字的出现顺序,跟全称里的出现顺序一致。
比如X、Y、金、科这四个字,在"XY金融科技有限公司"里都出现,且顺序一致。
如果能保证这个效果,匹配精确度应该挺高。

要实现公司简称的每一个字都在公司全称里出现
可以修改设置,在建立倒排索引时使用standard分词器,对文档按字拆分,查询时也指定standard分词器


image.png image.png

但是这样的问题是,不能保证顺序,XY金科可以匹配出“XY科技金融有限公司”


image.png

查阅资料,发现match_phrase可以保证查询语句的分词结果,在字段的分词结果里都包含,且顺序相同,且必须连续。
但是问题来了,使用standard分词器时,“XY金科”的分词结果是X、Y、金、科,这四个字在“"XY金融科技有限公司”的分词结果中不连续,无法匹配。


image.png

查阅资料,发现可以通过配置slop,告诉match_phrase查询词条能够相隔多远时仍然将文档视为匹配,但是,由于公司简称和公司全称都不固定,slop也无法确定。
如果slop长度太小,简称会匹配不上全称,比如文档“XY金融科技有限公司”中“金”和“科”隔了1个字,“金”需要移动1次才能跟“科”相邻,所以slop>=1时,“XY金科”才能匹配上“XY金融科技有限公司”,但是如果查询词条的间隔大于设置的slop,又匹配不上。


image.png image.png

如果slop设置的太大,就保证不了查询语句分词后结果在文档的分词结果中顺序一致,以下图为例,如果“金”移动到语句末尾时,移动次数<slop,就会继续移动,最后还是有可能匹配到“科”
(注:不清楚slop的移动规则,下图中slop设置为3同样可以匹配出两条结果)


image.png

后来,终于想到可行的方案
先把字段类型改为keyword,即索引时不分词,再使用正则表达式查询,在每一个字间加上*通配符,比如"XY金科"的正则表达式是"*X*Y*金*科*",这样又能保证每个字都出现,也能保证顺序


image.png

相关文章

  • 公司简称

    昨晚有个同行业朋友拉了个群,都是同行业同岗位的人,大家可以一起交流。 我觉得拉群也挺好的,多认识认识人这事我并不排...

  • 公司简介

    公司全称 公司简称 公司成立时间 公司创始人 公司精神/标语/(就是像校训那种几个字的,有就告诉我一下,没有也没关...

  • 同花顺上市公司简单数据爬取

    针对读者:入门语言:python目标:爬取上市公司的股票代码、公司简称、公司全称、创办日期、上市日期、历史年度营收...

  • 可交换债券和可转换公司债券区别

    可交换债券可交换债券(Exchangeable Bond,简称EB)全称为“可交换他公司股票的债券”,是指上市公司...

  • ARM公司的英文全称

    ARM (Advanced RISC Machine )

  • ElasticSearch的安装以及与springboot的集成

    前言: elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是...

  • linux命令简称和全称

    su:Swith user 切换用户,切换到root用户cat: Concatenate 串联uname: U...

  • ES6特性归纳

    ES6特性归纳 ES的全称是ECMAScript,它是JavaScript的规格,JS是ES的一种实现。ES还有J...

  • 各保险公司简称

    AHIC 安华农业保险股份有限公司 SMIC 阳光农业相互保险公 AICS 永诚财产保险股份有限公司 SPIC 三...

  • MySQL 高可用架构之 PXC 集群

    Percona XtraDB Cluster (简称 PXC) 是 Percona 公司开源的实现 MySQL 高...

网友评论

    本文标题:es实现公司简称匹配公司全称

    本文链接:https://www.haomeiwen.com/subject/ocsqrktx.html