这段时间对企业搜索产生了一定的兴趣,我自己一直从事企业内容管理系统(ECM)实施的工作,而我所了解到的相关产品,如Documentum,Open Text,Alfresco等都有自己的全文搜索引擎,但这些全文搜索引擎只负责搜索自己的内容库中的内容。而对于一个企业来说,有可能需要一个自己内部的google或百度,能对自己企业内部的所有数据进行索引,分类并能在实现信息安全的前提下,通过一个单一的搜索入口,实现对企业内部所有的数据进行搜索,方便企业内部的用户对数据的查找,从而极大提高企业对数据的利用效率。
企业搜索的产品很多,Autonomy,Endeca,google box,Solr/Lucene等。而Solr作为一款优秀的开源企业搜索引擎被很多技术人员尤其是java开发人员所熟知。
首先简单介绍一下Solr,Solr本身是一个完整的Web 应用,你能直接通过http request发送请求(RESTful)进行搜索相关的增删改查;当然,你也能直接通过java api--solrj的方式进行搜索方面的操作。Solr和Lucene的关系来说,Solr基于Lucene,在Lucene之上做了扩展,而Lucene其实是一个Lib而不是一个完整的应用。
本系列的相关文章以Solr为基础,一步一步地建立一个Web应用,用来搜索本地文件系统--桌面搜索引擎。
下面就开始进入正题吧,让我们开始Solr之旅!第一步自然是安装Solr,并让Solr跑起来。
当前最新的release版本是Solr 3.6,你可以从http://lucene.apache.org/solr/downloads.html下载到二进制的版本。如果你是windows用户,请下载 apache-solr-3.6.0.zip。如果是linux用户,请下载apache-solr-3.6.0.tgz
Solr对运行环境的唯一要求是要有Java,由于Solr本身是用Java编写的,因此你的机器上需要安装Java,版本应为Java 6的最新版。Solr本身只需要JRE环境就能运行,不过如果你还想通过jconsole检测系统,那就必须使用JDK了。
安装Solr可以说是超级简单,你所需要做的就是把之前下载下来的压缩包解压,That’s it!安装完成。Solr默认自带了Jetty–一个很轻量级的Servlet Container,你不需要安装其他任何组件就可以运行Solr了,当然你也可以将Solr安装在其他的J2EE兼容的application server上,比如Tomcat,不过目前我们暂时不做这方面的讨论。
到这里,你需要明确一个重要的信息就是Solr Home Directory,对于Solr自带的example应用来说,Solr Home Directory位于${install location}/example/solr,为什么说它重要呢?因为solr通过该路径找到相关的配置文件,如:solr.xml以及conf文件夹下的其他重要配置文件,如:schema.xml等。
OK!激动人心的时刻来了,我们准备启动Solr!首先进入example文件夹,然后运行jetty的start.jar:
>>cd example >>java -jar start.jar
你会看到很多屏幕输出,最后你应该看到:
2012-04-17 15:25:58.711:INFO::Started [email protected]:8983
如果到了这步,恭喜你Solr启动成功了!
接下来我们就可以做一些小测试,体验一下Solr的功能了。你可能对以下的一些操作或参数不是很理解,没关系!这里你只需要照做就行,随着本系列的深入,你将会豁然开朗!
首先进入example/exampledocs目录,然后运行post.jar,如下所示:
>> cd example/exampledocs >>java -jar post.jar *.xml
你会看到如下输出:
SimplePostTool: version 1.4 SimplePostTool: POSTing files to http://localhost:8983/solr/update.. SimplePostTool: POSTing file gb18030-example.xml SimplePostTool: POSTing file hd.xml SimplePostTool: POSTing file ipod_other.xml … etc. SimplePostTool: COMMITting Solr index changes..
到了这步又要恭喜你了,现在你的Solr里面有数据了!接下来我们就来做些小测试吧!
访问http://localhost:8983/solr/admin/,你就能进入Solr Admin界面。如下图所示,admin很重要,尤其能极大方便你对数据的调试。
Query String输入框里面的*.*类似于SQL里面的select * from <table>,点击Search按钮,你就能看到一个xml的返回结果,如下图所示:
你可以点击其他的链接大致了解一下对应的功能。
和Solr的交换主要是通过HTTP/Restful方式进行的,下面通过一个非常简单的例子来说明。在浏览器的地址栏里输入:http://localhost:8983/solr/select/?q=monitor;该查询的含义就是查关键字monitor。返回的结果xml中,你能看到<result name=”response” numFound=”2″ start=”0″>,说明找到了2条记录。
接下来看一个更强大的sample应用程序,看了它你就知道solr能做些什么了!访问http://localhost:8983/solr/browse,这个应用的名称叫Solritas,它基于Velocity。这个应用包括了Solr的大部分功能,比如关键字搜索,facet search,highlight,autocomplete等。如下图所示,你现在可以试着探索一下这个应用。
关于Solritas一个令人着迷的地方是你只需通过修改一些配置就能快速建立一个符合你需求的搜索引擎原型,它是一个帮你快速建立原型的好工具。