> 文章列表 > 中国程序员开发出无需分词的搜索引擎,比Elastic Search更快

中国程序员开发出无需分词的搜索引擎,比Elastic Search更快

中国程序员开发出无需分词的搜索引擎,比Elastic Search更快

目前使用最广泛的搜索引擎技术是Elastic Search,这是一款开源软件,在国内,阿里巴巴、腾讯、滴滴、今日头条、饿了么、 360安全、小米,vivo 等诸多知名公司都在使用Elasticsearch,国外也基本上是这个情况,github也使用Elastic Search。

小唐搜索引擎技术是我们在做语义研究的过程中发展出来的一项新技术,与ElasticSearch技术上的区别在哪里呢?

最大的区别是:ElasticSearch基于分词索引(term),而小唐搜索引擎技术不需要分词!(你没有听错)

下面举例说明:

对于句子:"中华人民共和国国歌",ElasticSearch的分词器会将这句话分为如下词:[中华人民, 共和国, 国歌](3个词)

你搜索这三个词,都会找到"中华人民共和国国歌" 这句话,但是你搜索"中华","人民","共和",将找不到这句话;

但这也好办,我继续分词如下: [中华人民共和国, 中华人民, 中华, 华人, 人民共和国, 人民, 共和国, 共和, 国, 国歌](10个词)

这样搜索以上词汇都能找到 "中华人民共和国国歌" 这句话了,代价就是,你的索引库体积增加了3.3倍,但依然还是搜不到一些词:例如搜"中",搜"华",搜"歌", 搜"共和国国歌"都找不到这句话("共和国国歌"用term查询搜不到,需要match组合查询才能搜到)。

你会说,那我继续拆分,直到把所有组合全部分出,这当然是可以的,你应该听过组合爆炸这个词,代价就是索引库体积几何倍数暴涨。

小唐搜索引擎技术正好解决了这个问题,它不需要分词,它可以搜索"中华人民共和国国歌"里面的任意组合,它也没有体积爆炸!

下面来说明一下为什么无分词的小唐搜索引擎比需要分词的Elastic Search先进:

刚才说了Elastic Search是有限分词,当用户搜索"xxx xxx",Elastic Search没有这个分词时,也不是就不能搜了,这个词会被拆分成两个词或多个词, 假设拆为两个词 term1, term2, 搜索后term1找到1亿个匹配,term2也找到1亿个匹配,那必须同时有term1和term2才符合用户要求啊,只能对2亿个匹配求交集, 求交集没有什么好办法,最多就是2个跳表来回跳,要不使用RoaringBitmap,无论怎么做,循环1亿次,每次做几下比较,几秒钟就用掉了。

而小唐搜索引擎不会出现这个情况,只要是连在一起的字符串,一律瞬间找到,无需组合求交集,这当然就快了啊!

你现在就可以去试验,www.tanglib.com 库中的任何一段文字,你任意截取,小唐都能瞬间搜索到。

当然,小唐也是可以做组合搜索的,这个算法跟Elastic Search就没有区别了。

你一定惊讶了,小唐的索引库会不会很大?建索引会不会很慢?

小唐的索引库会有多大呢?确实是不小的,但目前内存,SSD这么便宜,无论什么业务应该都是可以接受的,1个G的文本,索引库<5个G,单机单线程建索引时间在1000秒左右。

ElasticSearch的情况呢?分词粒度是影响ElasticSearch的索引体积和建库时间的,有人做过实验:点击打开文章

小唐的优势在哪儿呢?最大的优势就是简便自由和高性能,再也不用担心分词不好漏掉目标词,因为小唐是可以随意搜索的, 它可以搜索空格,可以大小写敏感,可以整词匹配,而丝毫不影响性能。

小唐搜索引擎采用c++写成,ElasticSearch由java语言写成,所以小唐是不需要Jvm,小唐的内存占用应该会更少更出色。

在源代码搜索上,小唐搜索引擎会超出ElasticSearch更多,举例说明一下:

例如程序员要找一个变量num, 想找到它被赋值的地方,那一般会搜 "num=" 或 "num =", 这在ElasticSearch中搜索就了不得,这得求交集啊,要是有1个T的代码, 那1个小时都出不来,而小唐呢?瞬间找到! 程序员又改注意了,要找一个叫num的函数,哪些地方调用了num函数,那就搜索"num(" 或者 "num (",那ElasticSearch又完蛋了,这又得需要一个小时啊,小唐呢,还是瞬间找到!

所以目前的互联网上,源代码搜索就没有做得好的,包括github,它的代码搜索就是ElasticSearch做得,那体验是稀烂的。

小唐搜索引擎搜代码那就太easy了,请在本站搜索一下安卓或鸿蒙的源代码,再到github搜索一下源代码,就能体会到小唐的优势。

实际上不仅仅是代码搜索,我们相信,任意搜索改为小唐驱动,都将会获得性能和搜索体验的提升。

小唐搜索引擎网站 www.tanglib.com 目前提供安卓13及鸿蒙源代码全文检索,用于演示小唐无所不能的搜索能力。

搜索引擎技术是互联网基础技术,也是人工智能的基础技术,在基础技术上一直是美国创新中国拿来使用,例如ElasticSearch,例如chatGPT,小唐搜索引擎技术才刚刚发布,希望能有更多的中国公司了解和使用,得以发扬光大。