如何搭建一个站内搜索引擎(二) 第2章 概述

本文深入探讨了站内搜索引擎的构建,包括灌库和搜索两大部分。灌库涉及抓取数据、拼装数据、parser解析数据和index处理数据。搜索部分详细阐述了AS和BS模块的工作流程,从查询分词到结果排序和返回。
摘要由CSDN通过智能技术生成

        从第1章如何搭建一个站内搜索引擎(一) 第1章 写在最前已经可以简要看出一个站内搜索的雏形。他主要包括2个方向的内容:灌库和搜索。

        在这篇文章中,我们将较为系统的描述整个部分的架构。

1、灌库

        从数据库(如mysql)中执行查询出数据,首要的前提是数据库中必须存在数据。同理,如果想从搜索引擎中查找到数据,那么搜索引擎中必须存在数据。因此,搜索引擎非常核心的一个部分就是灌库--即把要搜索的数据按照一定的格式灌入到索引库中。

        不同类别的搜索引擎灌库方式不同,但是他们的总体流程非常一致。主要有如下图2-1所示的4步,下面一一叙述。

图2-1

1.1 抓取数据

        不同类型搜索引擎的区别主要体现与此。

        非站内搜索引擎(用户搜索引擎),如Google/百度,是通过spider去抓取别人网站的html格式数据,并进行存储。在此处,搜索引擎需要考虑很多因素。针对抓取源,抓取算法需要考虑抓取的时间、抓取的周期。如新闻网站,抓取周期比较短,对于热词网站,甚至差不多能达到实时的效果,政府部门的静态网页,往往几周甚至几个月抓取一次。

        站内搜索或者和别人合作的垂直搜索则不需要考虑抓取内容。如果是本站内容,我们可以通过数据库直接生产json格式。

1.2 拼装数据

        因为抓取的内容格式千奇百怪,我们自己站内的数据一般存储在mysql等数据库中。而对外合作的数据可能是html,也可能是json,甚至是xml,所以这里需要通过正则匹配(html)、拼装数据库内容等一系列操作取得固定的结构化数据(如json,百度内部可以使用二进制的mcpack)。

1.3 parser解析数据

        parser从1.2中获得数据之后,需要对数据进行解析。在这里面,一份资源,有些字段属于检索query的词语,需要建立倒排,在建立倒排的时候,按照具体需要,有些字段需要切词,有些则不需要切词;而且不同字段的权重理论上也是不一样的(一般是 标题>摘要>正文)。有些字段属于筛选或者加权的字段,需要建立正排字段,比如买书的搜索,可能要塞选评论数大于100的书就

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值