搭建简单搜索引擎来了解搜索引擎原理

张国平老师在他的文章怎么样去学SEO(一)中提到过可以通过自己搭建Lucene一类的搜索引擎去实践一下。今天,小编就带大家通过Solr搭建一个简单的搜索引擎来了解一下搜索引擎的原理。

我们这次用的是一个开源搜索项目Apache Solr,官网上是这样介绍的:

Solr is the popular, blazing fast, open source NoSQL search platform from the Apache Lucene project.

Solr是基于Apache Lucene项目的一个广受欢迎的,超快的,开源NoSQL的搜索平台。

不像Lucene,类似一个信息检索的工具包,提供的是API; Solr则是一套完整的搜索引擎系统。用Solr搭建一个简单的搜索引擎非常方便,只需要几分钟就可以搞定。

首先需要确保Solr的安装环境,需要安装Java 7 u55以上版本。

然后去官网下载Solr 文件

https://lucene.apache.org/solr/

搭建简单搜索引擎来了解搜索引擎原理001

由于安装需要使用Shell,所以小编把Solr装在了Mac上,方便用终端Terminal的命令行工具。如果没有mac的同学可以在windows上安装cygwin或者linux虚拟机进行操作。

将文件下载下来后,通过终端进入Solr的zip包所在的文件夹,然后通过unzip命令解压,比如:

unzip -q solr-5.5.0.zip

其中solr-5.5.0.zip 为Solr安装包的名字。

搭建简单搜索引擎来了解搜索引擎原理008

然后通过如下命令进入Solr安装包文件夹

cd solr-5.5.0/

再通过如下命令开启Solr:

bin/solr start -e cloud -noprompt

搭建简单搜索引擎来了解搜索引擎原理002

搭建简单搜索引擎来了解搜索引擎原理003

这个时候你会看到 SolrCloud example running, please visit: http://localhost:8983/solr

你可以去访问http://localhost:8983/solr这个地址,你会看到这样一个界面,说明你已经搭建成功了。

搭建简单搜索引擎来了解搜索引擎原理004

但是,此时的搜索引擎是没有收录任何数据的。我们知道,像百度,Google这样的搜索引擎会去抓取网页,放到自己的数据库中,因此,小编也用工具抓了WAW官网的一些文章。这个时候,搜索引擎只是收录了网页,还并未对网页进行索引。

因此,小编把抓取下来的100多篇html放到了Solr项目中,并在Mac终端运行了如下代码:

bin/post -c gettingstarted docs/crawl/

上面代码中/crawl/文件夹下面放着小编刚刚抓取的100多张网页,小编把它放在Solr的/docs/文件夹下。

运行代码后,就会看到类似这样

搭建简单搜索引擎来了解搜索引擎原理005
搭建简单搜索引擎来了解搜索引擎原理006

129 files indexed. 意味着文件建立了索引。所谓建立索引,就是建立关键词与文件地址的映射关系,这样用户才有可能通过搜索关键词或者词组,找到一个文件。除了一些文件的索引,Solr页支持一些如JSON,XML,CSV等数据格式。

好,大功告成,下面我们可以测试一下,通过访问这个地址:

http://localhost:8983/solr/gettingstarted/browse

并且搜索一个词,你会看到返回了一系列的搜索结果的元信息(meta)

搭建简单搜索引擎来了解搜索引擎原理007

其实这只是搜索引擎的一个简单的例子。Solr是一个企业级的全文搜索引擎,在实际应用中,往往复杂得多。企业搭建一个搜索引擎除了需要考虑架构,性能,以及关乎搜索质量的语义分析等方面。有些企业会根据自己的实际情况去拓展Solr的分词组件,使分词更加精准,从而得到一个质量更高的搜索结果。而一个像Baidu,Google这样的搜索引擎更为复杂,算法,数据处理能力,都会有更高的要求。