您好,欢迎访问三七文档
solr基础知识1.Solr是什么?Solr它是一种开放源码的、基于LuceneJava的搜索服务器,易于加入到Web应用程序中。Solr提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP的管理界面。可以使用Solr的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括:高级的全文搜索功能专为高通量的网络流量进行的优化基于开放接口(XML和HTTP)的标准综合的HTML管理界面可伸缩性-能够有效地复制到另外一个Solr搜索服务器使用XML配置达到灵活性和适配性可扩展的插件体系2.Lucene是什么?Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene目前是ApacheJakarta(雅加达)家族中的一个开源项目。也是目前最为流行的基于Java开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于Lucene,比如Eclipse帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene就能对你的文档进行索引和搜索。3.SolrvsLuceneSolr与Lucene并不是竞争对立关系,恰恰相反Solr依存于Lucene,因为Solr底层的核心技术是使用Lucene来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr:Solr是Lucene面向企业搜索应用的扩展。Solr与Lucene架构图:Solr使用Lucene并且扩展了它!一个真正的拥有动态字段(DynamicField)和唯一键(UniqueKey)的数据模式(DataSchema)对Lucene查询语言的强大扩展!支持对结果进行动态的分组和过滤高级的,可配置的文本分析高度可配置和可扩展的缓存机制性能优化支持通过XML进行外部配置拥有一个管理界面可监控的日志支持高速增量式更新(FastincrementalUpdates)和快照发布(SnapshotDistribution)4.RHEL下部署Solr1)下载solr4.7.0.zip2)解压solr-4.7.0.zip[root@SnsRedhat2Yangpengsoft]#unzipsolr-4.7.0.zip3)将solr-4.7.0/dist/solr-4.7.0.war拷贝到tomcat的webapps下,并改名solr.war[root@SnsRedhat2Yangpengdist]#cpsolr-4.7.0.war/root/sp1/soft/tomcat/tomcat/webapps/solr.war4)运行tomcat,solr.war自会解压[root@SnsRedhat2Yangpengbin]#shstartup.sh5)拷贝solr-4.7.0/example/lib/ext/下所有jar包至webapps/solr/WEB-INF/lib/[root@SnsRedhat2Yangpengsoft]#cpsolr-4.7.0/example/lib/ext/*tomcat/tomcat/webapps/solr/WEB-INF/lib/6)在tomcat/tomcat/webapps/solr/WEB-INF下创建classes文件夹[root@SnsRedhat2YangpengWEB-INF]#mkdir-pclasses7)将solr-4.7.0/example/resources/log4j.properties拷贝到webapps/solr/WEB-INF/classes下[root@SnsRedhat2YangpengWEB-INF]#cp../../../../../solr-4.7.0/example/resources/log4j.propertiesclasses/8)创建solrHome文件夹,这里我建在了和tomcat同级目录,这时全路径是:/root/sp1/soft/solrHome[root@SnsRedhat2Yangpengsoft]#mkdir-psolrHome9)修改webapps/solr/WEB-INF下的web.xml,打开env-entry的注释,改为如下内容:env-entryenv-entry-namesolr/home/env-entry-nameenv-entry-value/root/sp1/soft/solrHome/env-entry-valueenv-entry-typejava.lang.String/env-entry-type/env-entry[注意]env-entry-value的值为solrHome的路径。10)把solr-4.7.0/multicore下的所有文件拷贝进solrHome[root@SnsRedhat2Yangpengsoft]#cp-rsolr-4.7.0/example/multicore/*solrHome/11)配置完毕,可以启动tomcat进行测试了。[root@SnsRedhat2Yangpengsoft]#shtomcat/tomcat/bin/startup.sh请求URL:出现如下界面:ok,环境部署成功。5.Solr基础因为Solr包装并扩展了Lucene,所以它们使用很多相同的术语。更重要的是,Solr创建的索引与Lucene搜索引擎库完全兼容。通过对Solr进行适当的配置,某些情况下可能需要进行编码,Solr可以阅读和使用构建到其他Lucene应用程序中的索引。在Solr和Lucene中,使用一个或多个Document来构建索引。Document包括一个或多个Field。Field包括名称、内容以及告诉Solr如何处理内容的元数据。例如,Field可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在solr的配置文件中进行相应的配置即可。Field可以使用大量的选项来描述,这些选项告诉Solr在索引和搜索期间如何处理内容。现在,查看一下表中列出的重要属性的子集:属性名称描述IndexedIndexedField可以进行搜索和排序。你还可以在indexedField上运行Solr分析过程,此过程可修改内容以改进或更改结果。StoredstoredField内容保存在索引中。这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。例如,很多应用程序存储指向内容位置的指针而不是存储实际的文件内容。5.1配置文件solr.xml这里没有配置defaultCoreName,默认为collection1。其中cores的adminPath属性指明通过浏览器查看主目录多个核的属性的相对地址。core是关于每个核的名字和目录的指示,例如,这里有两个核,core0和core1,它们各自的实例目录分别是solr.xml所在文件夹下的core0和core1目录。而且,就算没有solr.xml文件,也不会报错的,因为都有默认值。源码片段如下:5.2模式配置Schema.xmlschema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\example\solr\collection1\conf中找到,它就是solr模式关联的文件。打开这个配置文件,会发现有详细的注释。模式组织主要分为三个重要配置publicstaticfinalStringDEFAULT_DEFAULT_CORE_NAME=collection1;publicstaticfinalStringDEF_SOLR_XML=?xmlversion=\1.0\encoding=\UTF-8\?\n+solrpersistent=\false\\n+coresadminPath=\/admin/cores\defaultCoreName=\+DEFAULT_DEFAULT_CORE_NAME+\+host=\${host:}\hostPort=\${hostPort:}\hostContext=\${hostContext:}\zkClientTimeout=\${zkClientTimeout:15000}\+\n+corename=\+DEFAULT_DEFAULT_CORE_NAME+\shard=\${shard:}\collection=\${collection:collection1}\instanceDir=\collection1\/\n+/cores\n+/solr;?xmlversion=1.0encoding=UTF-8?solrpersistent=falsecoresadminPath=/admin/coreshost=${host:}hostPort=${jetty.port:8983}hostContext=${hostContext:solr}corename=core0instanceDir=core0/corename=core1instanceDir=core1//cores/solr5.2.1.types部分是一些常见的可重用定义,定义了Solr(和Lucene)如何处理Field。也就是添加到索引中的xml文件属性中的类型,如int、text、date等.参数说明:属性描述name标识而已class和其他属性决定了这个fieldType的实际行为。sortMissingLast设置成true没有该field的数据排在有该field的数据之后,而不管请求时的排序规则,默认是设置成false。sortMissingFirst跟上面倒过来,默认是设置成falseanalyzer字段类型指定的分词器type当前分词用用于的操作.index代表生成索引时使用的分词器query代码在查询时使用的分词器tokenizer分词器类filter分词后应用的过滤器过滤器调用顺序和配置相同.fieldTypename=text_generalclass=solr.TextFieldpositionIncrementGap=100analyzertype=indextokenizerclass=solr.StandardTokenizerFactory/filterclass=solr.StopFilterFactoryignoreCase=truewords=stopwords.txtenablePositionIncrements=true/filterclass=solr.LowerCaseFilterFactory//analyzeranalyzertype=querytokenizerclass=solr.StandardTokenizerFactory/filterclass=solr.StopFilterFactoryignoreCase=truewords=stopwords.txtenablePositionIncrements=true/filterclass=solr.SynonymFilterFactorysynonyms=synonyms.txtignoreCase=trueexpand=true/filterclass=solr.LowerCaseFilterFactory//analyzer/fieldTyp
本文标题:Solr基础知识
链接地址:https://www.777doc.com/doc-4945129 .html