张国平老师在他的文章怎么样去学SEO(一)中提到过可以通过自己搭建Lucene一类的搜索引擎去实践一下。今天,我们通过Solr搭建一个简单的搜索引擎来了解一下搜索引擎的原理。
我们这次用的是一个开源搜索项目Apache Solr,官网上是这样介绍的:
Solr is the popular, blazing fast, opensource 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/
由于安装需要使用Shell,所以小编把Solr装在了Mac上,方便用终端Terminal的命令行工具。如果没有mac的同学可以在windows上安装cygwin或者linux虚拟机进行操作。
将文件下载下来后,通过终端进入Solr的zip包所在的文件夹,然后通过unzip命令解压,比如:
unzip -q solr-5.5.0.zip
其中solr-5.5.0.zip为Solr安装包的名字。
然后通过如下命令进入Solr安装包文件夹
cd solr-5.5.0/
再通过如下命令开启Solr:
bin/solr start -e cloud -noprompt
这个时候你会看到SolrCloud example running, please visit: http://localhost:8983/solr
你可以去访问http://localhost:8983/solr这个地址,你会看到这样一个界面,说明你已经搭建成功了。
但是,此时的搜索引擎是没有收录任何数据的。我们知道,像百度,Google这样的搜索引擎会去抓取网页,放到自己的数据库中,因此,小编也用工具抓了WAW官网的一些文章。这个时候,搜索引擎只是收录了网页,还并未对网页进行索引。
因此,小编把抓取下来的100多篇html放到了Solr项目中,并在Mac终端运行了如下代码:
bin/post -c gettingstarted docs/crawl/
上面代码中/crawl/文件夹下面放着小编刚刚抓取的100多张网页,小编把它放在Solr的/docs/文件夹下。
运行代码后,就会看到类似这样
129 files indexed.意味着文件建立了索引。所谓建立索引,就是建立关键词与文件地址的映射关系,这样用户才有可能通过搜索关键词或者词组,找到一个文件。除了一些文件的索引,Solr页支持一些如JSON,XML,CSV等数据格式。
好,大功告成,下面我们可以测试一下,通过访问这个地址:
http://localhost:8983/solr/gettingstarted/browse
并且搜索一个词,你会看到返回了一系列的搜索结果的元信息(meta)
其实这只是搜索引擎的一个简单的例子。Solr是一个企业级的全文搜索引擎,在实际应用中,往往复杂得多。企业搭建一个搜索引擎除了需要考虑架构,性能,以及关乎搜索质量的语义分析等方面。有些企业会根据自己的实际情况去拓展Solr的分词组件,使分词更加精准,从而得到一个质量更高的搜索结果。而一个像Baidu,Google这样的搜索引擎更为复杂,算法,数据处理能力,都会有更高的要求。