一个小规模团队,如何做一个搜索引擎?


问题很明了 。如何做一个搜索引擎
我来回答
首先 。一个完整的网络通用搜索引擎在逻辑上由四部分组成 。根据图1 。分成数据采集、数据加工、数据索引、数据服务 。

一个小规模团队,如何做一个搜索引擎?

文章插图
数据采集模块俗称网络爬虫或者网络蜘蛛 。虽然名字很形象 。但是从实践的角度来说 。计算机程序的处理过程和昆虫的自发行为有很大的差别 。数据采集模块需要能够正确获取到网站的网页 。它的行为更像我们在浏览器中输入网址后不断的点击网页链接 。所以更为贴切的说法是数据采集模块即模拟了网页浏览器 。又模拟了人类的网页点击行为 。
粗放地来看 。数据采集模块应该具有2个基本功能:
1:根据网页地址(URL)获取该地址对应的网页文件 。
2:解析出网页文件中的链接地址和网页有效信息文本 。
数据加工模块是搜索引擎的核心功能 。它负责对数据采集模块采集的网页有效信息文本进行加工 。使得我们人类能看懂的文字信息能够按照设定的规则被计算机理解 。
对于一个初级搜索引擎来说 。需要将文本文字进行拆解、归类 。如果是中文 。还需要在拆解的时候对中文进行分词 。之后将解析结果发送给索引模块 。索引模块再进一步加工后录入到搜索引擎的数据库中 。如果要实现一个更加智能的高级搜索引擎 。在上述步骤的基础上 。还要能够实现语义理解 。这样当用户在搜索“明天星期几”的时候 。搜索引擎给出的应该是包含“明天是星期六”或者“明天是星期一” 。。。。。。
诸如此类的结果 。而不仅仅是含有“明天星期几”这5个关键词的网页结果集合 。数据索引模块是搜索引擎的另外一个核心 。它和数据加工模块的关系就像人类的心和肺 。缺一不可 。这个模块主要功能是将数据加工模块的处理结果保存在一个规范的数据结构中 。这样做的目的是为了给接下去的数据服务模块提供便利 。使得数据服务模块能够在极短的时间内完成对整个互联网数据的信息检索 。数据服务模块是搜索引擎对外部提供服务的接口 。
它要能够对外部输入进行及时响应 。并联系数据索引模块 。取出用户查找内容的网页结果 。很多时候 。为了能够高效地对用户行为进行反馈 。搜索引擎常常在这个模块处实现一些预测或者缓存算法 。别勉对用户的每一次查询都实施一次完整的数据查找流程 。从上述对4个模块的描述可以看出 。搜索引擎和一个图书馆的图书检索系统并没有太大差别 。且搜索引擎的模块链都是单向且唯一的 。不存在多个模块之间需要进行数据交互 。或者数据交互是双向的 。仅这一点而言 。搜索引擎在逻辑上还是比较简单的 。我相信 。读者只要能够坚持 。最后实现一个实用的搜索引擎应用是完全没有问题的 。
其他观点:
1、一个搜索引擎由搜索器 、索引器 、检索器 和用户接口 四个部分组成 。搜索器的功能是在
互联网
中漫游 。发现和搜集信息 。索引器的功能是理解搜索器所搜索的信息 。从中抽取出索引项 。用于表示文档 以及生成文档库的索引表 。检索器的功能是根据用户的查询在索引库中快速检出文档 。进行文档与查询的相关度评价 。对将要输出的结果进行排序 。并实现某种用户相关性反馈机制 。用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制 。2、搜索引擎(Search Engine)是指根据一定的
策略
、运用特定的
计算机程序

互联网
上搜集信息 。在对信息进行组织和处理后 。为用户提供检索服务 。将用户检索相关的信息展示给用户的系统 。搜索引擎包括全文索引、目录索引、元搜索引擎、
垂直搜索引擎

集合式搜索引擎
、门户搜索引擎与
免费链接
列表
其他观点:
全网形式的搜索引擎已经不建议了 。
这里给个小建议:
1.网盘搜索还是可以专业的发展 。
2.论文 。文献 。标题的索引是个趋势 。
3.全网小视频的检索 。是个方向 。
4.图片搜索 。特定文档搜索 。也是个方向 。
5.微博 。知乎 。豆瓣 。等特定站点的搜索 。
【一个小规模团队,如何做一个搜索引擎?】至于用什么开发 。小编就不能给专业建议了!

    推荐阅读