ICP备案+网站制作+网站托管一年只需3000元

网站建设、行业建站案例

Python实现一个大数据搜索引擎需要多少行代码给我十分钟就好

首先创建了一个容量为10的的布隆过滤器

然后分别加入 ‘dog’,‘fish’,‘cat’三个对象,这时的布隆过滤器的内容如下:

然后加入‘bird’对象,布隆过滤器的内容并没有改变,因为‘bird’和‘fish’恰好拥有相同的哈希。

最后我们检查一堆对象(’dog’, ‘fish’, ‘cat’, ‘bird’, ‘duck’, ’emu’)是不是已经被索引了。结果发现‘duck’返回True,2而‘emu’返回False。因为‘duck’的哈希恰好和‘dog’是一样的。

主要分割

主要分割使用空格来分词,实际的分词逻辑中,还会有其它的分隔符。例如Splunk的缺省分割符包括以下这些,用户也可以定义自己的分割符。

] ( ) { } | ! ; , ‘ ” *\n\n s\t & ? + %21 %26 %2526 %3B %7C %20 %2B %3D — %2520 %5D %5B %3A %0A %2C %28 %29

搜索

好了,有个分词和布隆过滤器这两个利器的支撑后,我们就可以来实现搜索的功能了。

上代码:

Splunk代表一个拥有搜索功能的索引集合

每一个集合中包含一个布隆过滤器,一个倒排词表(字典),和一个存储所有事件的数组

当一个事件被加入到索引的时候,会做以下的逻辑

为每一个事件生成一个unqie id,这里就是序号

对事件进行分词,把每一个词加入到倒排词表,也就是每一个词对应的事件的id的映射结构,注意,一个词可能对应多个事件,所以倒排表的的值是一个Set。倒排表是绝大部分搜索引擎的核心功能。

当一个词被搜索的时候,会做以下的逻辑

检查布隆过滤器,如果为假,直接返回

检查词表,如果被搜索单词不在词表中,直接返回

在倒排表中找到所有对应的事件id,然后返回事件的内容

更复杂的搜索

更进一步,在搜索过程中,我们想用And和Or来实现更复杂的搜索逻辑。

上代码:

谢谢阅读!

如有侵权联系小编删除哦!

发稿网(QQ:599515669)是全国领先的在线新闻稿发布平台,团队由资深互联网专家组成,服务内容类涵盖软文发布、软文发布、微信营销、微博营销、视频置顶、百度问答等多种互联网广告行业。发稿网平台有上千媒介编辑、专业写手、段子手、营销专家,为企业、公共机构和个人提供定制化的解决方案,将创意、智慧、技能转化为商业价值和社会价值。发稿网平台凭借多年的网络资源和客户资源积累,发展遥遥领先同行业其他软文平台

相关推荐

评论 抢沙发