.net软件xcopy形式集成solr搜索引擎

Solr 是基于Luncene的开源企业搜索服务,提供了一个打包即用的解决方案[使用Luncene集成化需要处理索引管理、分析器等一系列的问题,自己实现还是相对麻烦的],solr对外以Http协议服务,增加了很多的辅助功能,核心集成luncene.

Lucid Imagination is the first commercial company exclusively dedicated to Apache Lucene/Solr open source technology. 提供了商业的解决方案

.net软件中如果绿色集成这个软件比较方便,否则安装一串东西很麻烦,无法体现 .net的xcopy的部署形式,本文针对.net程序集成solr服务的步骤进行描述

另一方面lucene.net(C#版本)的版本更新和Luncene落后不少,因此基于solr还是一个很好的解决方案(solr几乎可以和Luncene同步更新,毕竟两者的偶合不大)

参考官网

http://lucene.apache.org/solr

http://www.lucidimagination.com/

概念

Solr 1.4 Enterprise Search Server.pdf lucidworks-solr-refguide-1.4.pdf 这两本书对solr的增强处理内容和语法等进行了详尽的描述,具体的配置和使用可参考这两本书

SolrCores

It's possible to segment Solr into multiple virtual instances, or cores, each with its own configuration and indices. Cores may be dedicated to a single application or to very different ones, but all are administered through a common administration interface. You can create new SolrCores on the fly, shutdown cores, even replace one running core with another, all without ever stopping or restarting your servlet container.

SolrCores对于需要分组管理索引的情况很有用,如所有的内容在一个索引库太大时可以分开,或者本身就是独立的资源。

SOLR绿色服务配置

由于现有的系统有32位、64的区别,以32位为例说明(64位的性能更高,我测试发现差不多有一倍的提高,JDK、Tomcat是分别发布的不同架构,32位和64位主要是这个区别)

以下是x86架构的目录结构

image

(服务使用的tomcat7,Jetty7 作为服务运行有些麻烦)

JDK的部署:把其他机器的安装好的JDK整个目录放在JDK上

Tomcat7:把其他机器的安装好的tomcat整个目录放在tomcat上, 把Lucid Imagination 的版本安装报SolrInstaller-1.4.1.jar中 lucidworks\webapps\solr.war的 solr.war放在tomcat7\webapps目录下

Solr:solr目录是默认的一些solrcores的配置文件和相关库,默认索引文件也存在这个目录下(coreX是其中的一个core),详细内容参考:http://cid-56b433ad3d1871e3.office.live.com/self.aspx/.Public/solr86.rar 

根目录:启动和服务的运行文件,参考下载:http://cid-56b433ad3d1871e3.office.live.com/self.aspx/.Public/solr86.rar

如:启动服务 start.bat

set JAVA_HOME=%cd%\jdk\

set CLASSPATH=%cd%\jdk\lib;

set PATH=%PATH%;%JAVA_HOME%

set CATALINA_HOME=%cd%\tomcat7

cd %0\..\

tomcat7\bin\catalina.bat run

:: SET /P M=Press ENTER:

solr.xml 对solrcores配置的文件

<?xml version="1.0" encoding="utf-8"?>

<solr persistent="false" sharedLib="lib">

<cores adminPath="/admin/cores" shareSchema="true">

<core name="coreX" instanceDir="coreX" />

</cores>

</solr>

示范coreX目录下的conf关键文件

solrconfig.xml

schema.xml

jdbc.xml:对数据库建立索引的设置

lib下:sqljdbc4.jar sql server的jdbc驱动

data:默认的索引目录

经过如上配置后,可以在任意个部署的机器使用start.bat启动solr服务,stop.bat关闭服务,svc.bat ***安装服务Service,绿色运行solr

出错的话在tomcat7\logs\catalina.****.log 日志中查看原因

启动后,就可以使用solr服务

总入口

http://localhost:8080/solr/

某个solrcore的管理入口(如coreX)

http://localhost:8080/solr/coreX/admin/

数据库导入的人口

http://localhost:8080/solr/coreX/admin/dataimport.jsp?handler=/dataimport

只要按照jdbc.xml建立好数据库,可以使用如上地址导入数据建立索引

.net集成

基于DRY原则,还是使用已有的库最好[自己根据约定的HTTP协议格式写当然完全没有问题]

mausch-SolrNet-0.3.0-0-g9fd45cd.zip

这个是较新的项目

solrsharp-Dec-30-2007.zip

这个项目较早,近来更新比较少

如下SolrNet的一个sample例子效果,实现的效果还是相当的强

 image

 

 

搜索的性能

方案完成后,对性能担心的话,可以看看性能,如果一下收集百万或千万条数据困难的话,可以在MusicBrainz.org下载很多的开放数据 http://musicbrainz.org/doc/Database_Download (最好使用数据库格式的)

我测试在2.8GCPU上的新建索引其中一个文件60万个数据条目约4~5分钟,600万条20~25分钟间完成(64位的版本速度提高查不到一倍),速度还是相当的快,在这个索引上的查询一般几十毫秒就完成了,如果有更高的搜索质量、性能要求,首先可以修改solr的配置,加入相关的插件,一般情况应该可以解决问题(基于Lucene的解决方案实在很多),实在有问题的话可以自己开发定制

至此,我们可以使我们的应用增加了检索的功能。【集成发布的产品和方案注意solr的授权协议】

posted @ 2011-03-25 22:48  2012  阅读(2504)  评论(6编辑  收藏  举报