同福

Python做个搜索引擎(1)模型设计【20201004】

介绍

介绍

今天开始福哥将会带着童鞋们做项目了,虽然我们之前介绍了c/c++、java、php、python等等很多种编程语言,这些编程语言也可以独立完成一些项目的开发任务,但是如果要做出一个好项目,一般情况下只靠一种编程语言是不够的,所以福哥在带着大家做项目的时候,会同时将几种编程语言都用起来。

我们的第一个项目叫做搜索引擎,就是模仿百度和谷歌的基本全文搜索功能,这里面当然要利用到刚刚安装起来的ElasticSearch搜索引擎软件,没有安装的童鞋们可以看以前的课程学习起来。

为了避免一下子引入过多的新知识,我们这次使用Python语言来完成全文搜索的主要编程工作,因为Python的界面操作还没有学习,所以我们这次做的搜索引擎是控制台(类似MS-DOS)形式的。

开发一个项目要有非常多的步骤,通常情况下是从需求分析、技术选择、模型设计、数据库设计、模块设计,最后才是编写代码,当然编写完代码还要经过严格的测试,质量检测,生产环境部署等等后期工作才能完成。

福哥要带着童鞋们做个简单的搜索引擎,这时候一些步骤会简化一带而过了,这次要做的项目需要用到Python、MySQL、ElasticSearch三个技术,今天我们先进行模型设计这一环节。

模型设计

首先我们可以想一想,搜索引擎都有哪些“东西”呢?最简单也是最主要的就是搜索出来的一个一个的搜索结果了,对吧?

那么搜索结果又是什么呢?我们会发现其实搜索结果都是一个一个的网页,包括了网页的标题,和匹配出来的内容,以及网页的原始网址。

e6dbf6b71dc4312e.jpg既然是网页就一定是从属于某一个网站的,毕竟一个网站至少会有一个网页,一般情况下一个网站会有很多很多的网页,像某宝,某东这样的大型网站它们的网页数量超过1000w个。所以,网站相对网页来说是一对多的关系,我们在设计模型的时候至少需要一个网站模型,一个网页模型,且每个网页模型需要从属一个网站模型。

网站模型

确定了网站模型之后,我们就需要给网站模型设计它的属性,网站有哪些属性呢?

我们可以随便罗列一下网站可能有的属性,包括但不限于网站域名、网站标题、网站关键字,网站描述、网站等等。除此之外,还应该有一些和搜索引擎相关的属性,包括但不限于收录量、权重值等等。

到此,我们的网站模型分析基本就算完成了!

网页模型

网页模型也是如此,用脑袋想一下网页会有哪些属性呢?

福哥可以想到的有所属网站、网页网址、网页标题、网页关键字、网页介绍、网页正文、网页图片,网页视频,网页音频等等。

到此,我们的网页模型分析也基本算是完成了!

总结

模型设计是做项目的第一步,看起来很简单,其实是需要非常丰富的经验的,因为后面的工作全部围绕模型开展,如果模型设计不合理,后面的工作就会一团糟!

模型设计的要领有几个,福哥把它们总结出来,分享给大家:

  • 清楚整体需求,逐步进行拆解

  • 留下在需求中发挥作用的模型,哪怕只有一丁点作用

  • 罗列出模型的全部属性

  • 保留与需求相关的属性,多余的全部省略掉

其实,模型设计只是一个粗略的设计,在项目开发过程中会发现很多附带的新模型需要加入进来。但是模型设计阶段要确定主要的模型,主要的模型是不能在后期逐步增加的。