设为首页 收藏本站
查看: 1156|回复: 0

[经验分享] 全文检索Solr + Solrnet

[复制链接]

尚未签到

发表于 2015-7-16 12:22:39 | 显示全部楼层 |阅读模式
  由于公司当前项目需要整合全文检索功能,比较了Lucene.net和Solr+Solrnet,毅然选择了后者,先了解下区别:
  Lucene:
  Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search
  Solr:
  Solr is an open source enterprise search server based on the Lucene Java search library, with XML/HTTP and JSON APIs, hit highlighting, faceted search, caching, replication, a web administration interface and ... (摘自http://stackoverflow.com/questions/1400892/search-engine-lucene-or-solr)
  所以Lucene是内嵌在Solr中的,同时Solr具有更多的功能,方便我们使用。
  Setup:Tomcat + Solr + Solrnet

  • 首先要安装Tomcat(Solr需要host在Servelt container中,比如Tomcat,Glassfish,JBoss,Jetty,Resin,WebLogic等,所以不能用IIS);
  • 在安装好的Tomcat中部署你的Solr实例;
  • 如果用C#的话,需要引入Solrnet或SolrSharp的dll来编写客户端代码;
  参考http://crazorsharp.blogspot.com/search/label/SolrNet
  上面这篇文章介绍的很详细,但笔者用的旧版的Tomcat6,solr1.4.0,和SolrNet0.2.3,而且有很多细节的介绍,这里就不再重述了,我主要介绍下我的搭建环境(这里用的都是新版本:Tomcat7.0.33,Solr 4.0.0,SolrNet-0.4)和中间遇到的问题,希望对大家有帮助:
  1,因为Solr是Java web app,需要Java Servlet来host,所以要先安装Java JDK和JRE,地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,之后要记得配置环境变量;
  
  2,安装Tomcat7.0.33(Windows7 64bit,做测试用,之后会移到Linux上):
  下载地址:http://tomcat.apache.org/download-70.cgi
  下载完成解压缩,然后把整个folder拷到你的C盘下就可以了C:\apache-tomcat-7.0.33,不需要安装,记得要配置环境变量,然后进入C:\apache-tomcat-7.0.33\bin,双击startup.bat就启动Tomcat了,你会看到类似画面, DSC0000.jpg ,表示启动成功,之后要关闭用shutdown.bat,这时候打开浏览器,输入http://localhost:8080/,会看到Tomcat的管理界面, DSC0001.jpg
  这时要自己配置一下管理员权限,进入C:\apache-tomcat-7.0.33\conf,找到tomcat-users.xml,加上下面的配置:
  
                 
                 
                 
                 
                 
  
  之后就可以用admin/admin进入“Manager App”来管理你host的所有App了;
  
  3,安装Solr,起初我用的是旧版本的solr1.4.0,因为新版的solr,在用SolrNet做commit的时候一直出错,但后来用旧版本从MS SQL Server做index的时候,又发现旧版本的solr不能很好的支持jdbc driver,所以迫不得已从新换回来新版solr4.0.0(地址:http://www.apache.org/dyn/closer.cgi/lucene/solr/4.0.0),接下来就要解决commit出错的问题,后来从github下载(https://github.com/mausch/SolrNet)了最新的SolrNet的code重新编译,用编译后的dll就成功了(不想下载整个project的同学可以在后面的附件下载)!;
  关闭Tomcat,然后把刚下好文件解压后,进入\apache-solr-4.0.0\dist,拷贝文件apache-solr-4.0.0.war到C:\apache-tomcat-7.0.33\webapps,并改名为solr.war,返回\apache-solr-4.0.0\example,拷贝文件夹solr到C:\下面,然后配置solr的主目录(这部分之前也出现很多bug,因为旧的方法对Tomcat7无效),在C:\apache-tomcat-7.0.33\conf\Catalina\localhost中新建一个solr.xml文件,内容输入:

  
  
     
  
  
  然后重启Tomcat,在浏览器中输入http://localhost:8080/solr/,就可以看到solr搭建成功了
DSC0002.jpg
  这时可以在Query String中输入*:*来测试,具体查询方法去看Solr Wiki;
  起初默认的Core Admin就只有collection1一个,如果要想建新的,就可以进入C:\solr,拷贝文件夹collection1到当前目录,改成自己的名字,好比CS,然后配置schema.xml和solrconfig.xml,重启tomcat,进入http://localhost:8080/solr/#的Core Admin中,选择Add Core,然后用相同的名字新建,然后刷新就ok了;
  
  4,测试SolrNet:
  这里我用的是http://crazorsharp.blogspot.com/search/label/SolrNet中的例子,对应的是Core Admin中的默认collection1,下载笔者提供的工具\TextFileHarvester2008\TextFileHarvester.exe,在cmd中输入TextFileHarvester.exe ".\SQLEXPRESS" "TextFilesDatabase" "C:\MyTextFiles” 1000(表示下载1000个文本文件,存入C:\MyTextFiles,并在数据库实例.\SQLEXPRESS中建db和table,把对于的记录存进去),接下来要修改schema.xml和solrconfig.xml,
  打开schema.xml,因为主键变成了FileId,所以删除下面两句:
  
  id
  然后再前面加上:
  
  
  
  
  在后面加上:
  fileid
  doctext
  
  同时进入solrconfig.xml删除QueryElevationComponent这一段;
  然后用SolrnetDemoSln中的IndexingCon先做index,后用SearchingCon来测试搜索功能,搞定!
  
  5,对MS SQL Server中的数据做index:
  这里我新建了一个Core Admin叫CS,用来对MS SQL Server中的数据做index,然后搜索,好比我有一个数据库是./TestDB,有一个表加Login,有三个字段UserID,UserName,Password;
  进入C:\solr\CS\conf,新建配置文件data-config.xml,内容如下:
  
  
     
          
              
              
              
              
              
          
     
  
  这里用的driver是Microsoft JDBC Driver for SQL Server,所以要检查C:\apache-tomcat-7.0.33\lib中是否包含sqljdbc4.jar(同时要删除sqljdbc.jar,因为默认会用这个,但是JRE1.7是不支持的),没有去http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774下载;
  最后打开solrconfig.xml,添加:
  
     
        data-config.xml
     
    
  和
  
  重启tomcat,进入http://localhost:8080/solr/#/CS,选择“Dataimport”,选择“full-import”(delta-import是只对最新insert/update的数据index),然后记得勾选“Commit”,点击“Execute Import”就大功告成了,然后进入“Query”测试!
  
  6,接下来会介绍怎么对多个数据库,多个表来进行index和寻找最佳搜索的方案,to be continued...
  
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87298-1-1.html 上篇帖子: Apache Solr 实现去掉重复的搜索结果 下篇帖子: 不错的 solr 使用安装介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表