1、solr入门指南企业级搜索引擎Solr使用入门指南http:/wiki.apache.org/solr/FrontPage 本文转自 由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择:1. 基于Lucene自己进行封装实现站内搜索。工作量及扩展性都较大,不采用。2. 调用Google、Baidu的API实现站内搜索。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,暂时不采用。3. 基于Compass+Lucene实现站内搜索。适合于对数据库驱动的应用数据进行索引,尤其是替代传统的like %expres
2、sion%来实现对varchar或clob等字段的索引,对于实现站内搜索是一种值得采纳的方案。但在分布式处理、接口封装上尚需要自己进行一定程度的封装,暂时不采用。4. 基于Solr实现站内搜索。封装及扩展性较好,提供了较为完备的解决方案,因此在门户社区中采用此方案,后期加入Compass方案。1、 Solr简介Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装
3、并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引。2、 Tomcat下Solr安装配置 由于Solr基于java开发,因此Solr在windows及Linux都能较好部署使用,但由于Solr提供了一些用于测试及管理、维护较为方便的shell脚本,因此在生产部署时候建议安装在Linux
4、上,测试时候可以在windows使用。下面以Linux下安装配置Solr进行说明,windows与此类似。wget unzip apache-tomcat-6.0.16.zipmv apache-tomcat-6.0.16 /opt/tomcatchmod 755 /opt/tomcat/bin/*wget tar zxvf apache-solr-1.2.0.tgzSolr的安装配置最为麻烦的是对solr.solr.home的理解和配置,主要有三种基于当前路径的方式 cp apache-solr-1.2.0/dist/apache-solr-1.2.0.war /opt/tomcat/web
5、apps/solr.warmkdir /opt/solr-tomcatcp -r apache-solr-1.2.0/example/solr/ /opt/solr-tomcat/cd /opt/solr-tomcat/opt/tomcat/bin/startup.sh由于在此种情况下(没有设定solr.solr.home环境变量或JNDI的情况下),Solr查找./solr,因此在启动时候需要切换到/opt/solr-tomcat基于环境变量solr.solr.home 在当前用户的环境变量中(.bash_profile)或在/opt/tomcat/catalina.sh中添加如下环境变量e
6、xport JAVA_OPTS=$JAVA_OPTS -Dsolr.solr.home=/opt/solr-tomcat/solr基于JNDI配置 mkdir p /opt/tomcat/conf/Catalina/localhosttouch /opt/tomcat/conf/Catalina/localhost/solr.xml ,内容如下:Xml代码 1. 2. 3. 访问solr管理界面 http:/ip:port/solr3、 Solr原理 Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在 Solr 中,用户通过向部署在servlet 容器中的 Sol
7、r Web 应用程序发送 HTTP 请求来启动索引和搜索。Solr 接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。默认配置返回 Solr 的标准 XML 响应,也可以配置 Solr 的备用响应格式。可以向 Solr 索引 servlet 传递四个不同的索引请求:add/update 允许向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和更新。commit 告诉 Solr,应该使上次提交以来所做的所有更改都可以搜索到。optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如
8、果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。 一个典型的Add请求报文Xml代码 1. 2. 3. TWINX2048-3200PRO4. CORSAIRXMS2GB(2x1GB)184-PinDDRSDRAMUnbufferedDDR400(PC3200)DualChannelKitSystemMemory-Retail5. CorsairMicrosystemsInc.6. electronics7.
9、memory8. CASlatency2,2-3-3-6timing,2.75v,unbuffered,heat-spreader9. 18510. 511. true12. 13. 14. VS1GB400C315. CORSAIRValueSelect1GB184-PinDDRSDRAMUnbufferedDDR400(PC3200)SystemMemory-Retail16. CorsairMicrosystemsInc.17. electronics18. memory19. 74.9920. 721. true22. 23. TWINX2048-3200PRO CORSAIR XMS
10、 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail Corsair Microsystems Inc. electronics memory CAS latency 2, 2-3-3-6 timing, 2.75v, unbuffered, heat-spreader 185 5 true VS1GB400C3 CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 32
11、00) System Memory - Retail Corsair Microsystems Inc. electronics memory 74.99 7 true 一个典型的搜索结果报文:Xml代码 1. 2. 3. 04. 65. 6. 107. 08. *,score9. true10. content:facetedbrowsing11. 12. 13. 14. 15. 16. 1.05821717. 18. http:/localhost/myBlog/solr-rocks-again.html19. SolrisGreat20. solr,lucene,enterprise,s
12、earch,greatness21. Solrhassomereallygreatfeatures,likefacetedbrowsingandreplication22. 23. 24. Solrhassomereallygreatfeatures,likefacetedbrowsingandreplication25. 26. 2007-01-07T05:04:00.000Z27. 28. solr,lucene,enterprise,search,greatness29. 30. 831. SolrisGreat32. http:/localhost/myBlog/solr-rocks-
13、again.html33. 34. 35. 36. 37. 38. 39. Solrhassomereallygreatfeatures,likefaceted40. browsingandreplication41. 42. 43. 44. 0 6 10 0 *,score true content:faceted browsing 1.058217 http:/localhost/myBlog/solr-rocks-again.html Solr is Great solr,lucene,enterprise,search,greatness Solr has some really gr
14、eat features, like faceted browsing and replication Solr has some really great features, like faceted browsing and replication 2007-01-07T05:04:00.000Z solr,lucene,enterprise,search,greatness 8 Solr is Great http:/localhost/myBlog/solr-rocks-again.html Solr has some really great features, like facet
15、ed browsing and replication 关于solr的详细使用说明,请参考http:/wiki.apache.org/solr/FrontPage4、 Solr测试使用 Solr的安装包包含了相关的测试样例,路径在apache-solr-1.2.0/example/exampledocs1. 使用shell脚本(curl)测试Solr的操作:cd apache-solr-1.2.0/example/exampledocsvi post.sh,根据tomcat的ip、port修改URL变量的值URL=http:/localhost:8080/solr/update./post.s
16、h *.xml # 2. 使用Solr的java 包测试Solr的操作:查看帮助:java -jar post.jar help提交测试数据:java -Durl=http:/localhost:8080/solr/update -Ddata=files -jar post.jar *.xml 下面以增加索引字段liangchuan、url为例,说明一下Solr中索引命令的使用1) 修改solr的schema,配置需要索引字段的说明:vi /opt/solr-tomcat/solr/conf/schema.xml ,在中增加如下内容Xml代码 1. 2. 2) 创建增加索引请求的xml测试文件touch /root/apache-solr-1.2.0/example/exampledocs/liangchuan.xml,内容如下:Xml代码 1. 2. 3. liangchuan0004. Solr,theEnterpriseSearchServer5. ApacheSoftwareFoundation6. liangchuanssolr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1