• 1. Solr使用和原理陈定军 2011年4月2日
  • 2. Solr简介说起Apache Lucene,可以说无人不知,无人不晓,但是说道Apache Solr,恐怕知道的不多。看看Apache Solr的说明: Solr是一个基于Lucene java库的企业级搜索服务器,包含XML/HTTP,JSON API, 高亮查询结果,缓存,复制还有一个WEB管理界面。Solr运行在Servlet容器中。 所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。 Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。 一句话概括Solr: Solr是Lucene面向企业搜索应用的扩展。
  • 3. Solr安装1、下载solr包 官方下载地址:http://www.apache.org/dyn/closer.cgi/lucene/solr/ 解压apache-solr-1.4.1.zip文件:将solr包解压,复制dist/apache-solr-1.4.1.war到指定目录,名字修改为solr.war
  • 4. tomcat配置1、{$TOMCAT}/conf/Catalina/localhost/下新增solr.xml,其内容如下:
  • 5. tomcat配置docBase:solr.war包所在目录,一般放在webapps下面,这样tomcat可以自动加载; solr/home:solr配置文件所在目录,一般放到与webapps同级的目录 override:每次创建索引是否覆盖
  • 6. tomcat配置2、把solr.war包放到docBase下面,即D:/Program Files/apache-tomcat-6.0.24/webapps/solr.war
  • 7. Solr配置1、SOLR home设置 复制solr解压目录下的E:\apache-solr-1.4.1\apache-solr-1.4.1\example\solr目录到{$SOLR_HOME}。 测试:http://localhost:8080/solr/admin
  • 8. Solr配置2、中文分词配置 我们目前使用的是IK分,其配置如下: 把IKAnalyzer.jar放到solr.war包的lib下 用下面的一段代码覆盖掉schema.xml中的text备份 测试分词效果:http://localhost:8080/solr/admin/analysis.jsp
  • 9. Solr配置
  • 10. 注意1、路径   当我们下载到一份新的solr功能,放到我们的目录中的时候,我们需要修改的路径如下: {$TOMCAT}/conf/Catalina/localhost/solr.xml 中的{$solr_home}和solr.war的目录 {$solr_home}目录下的solr.xml文件中各个core的目录
  • 11. 注意{$solr_home}目录下的solrconfig.xml(solr主配置文件)文件中数据库配置文件路径 {$solr_home}目录下的data-config.xml(数据库配置文件)中的数据源
  • 12. Solr主要配置文件solrconfig.xml:该文件是solr的主配置文件,配置高亮,数据源,索引大小,索引合并等所有的索引策略配置; schema.xml:该文件是配置查询字段信息,定义了所有的数据类型和各索引字段的信息(如类型,是否建立索引,是否存储原始信息);
  • 13. Solr主要配置文件data-config.xml:数据库配置信息文件,配置了数据源信息,全量索引,增量索引的数据库查询……
  • 14. 词典介绍Solr自带词典 Solr自带的词典有: protwords.txt:主题词,不会被拆分 stopwords.txt:停用词词典,在建立索引时被忽略 synonyms.txt:同义词词典 spellings.txt:错误提醒
  • 15. 词典介绍当使用solr自带的词典时,如果要增加中文词语,则要将该词典的格式转为UTF-8无BOM格式。
  • 16. 词典介绍IK分词词典 IK分词词典在目录为org\wltea\analyzer\dic (请大家参考IKAnalyzer中文分词器V3.2.8使用手册.pdf)
  • 17. solrJ与solrSolrj 是访问 Solr 的 Java 客户端,它提供添加、更新和查询Solr 索引的接口
  • 18. solrJ与solrSolrj:如果采用http直接访问的方法,我们必然会用到httpclient请求Solr服务器。其中所有的搜索条件都必须通过拼接一个负责冗长的url,例如:q=tags:t5 AND t7&fl=auction_id&start=0&rows=4&sort=auction_id desc&…&...&… ,通过GET的方式,请求服务器。 Solrj :面对对象的思想,所有搜索条件均以setter属性的方式设置到其封装的对象当中。但是,实际上还是通过拼接url的方式,走http请求的方式再请求Solr服务器。 Result: 本质完全相同,有了Solrj,开发会省很多事,将很多开发中的体力活交给Solrj。但是直接拼接url的方式肯定比对象的方式灵活很多。因为其中不复杂,有兴趣的同学,可以给Solrj加个方法,直接在Solrj最终生成的url上加上任何字符串。
  • 19. 参考资料官网:http://lucene.apache.org/solr/ wiki:http://wiki.apache.org/solr/FrontPage