solr介绍及安装使用
- 格式:docx
- 大小:1.99 MB
- 文档页数:35
Solr全文检索服务器1课程计划1、solr介绍2、solr下载安装3、solr基本使用a)shecma.xmlb)中文分词器4、Solrj的使用5、京东案例2课程目标1、学会安装solr服务器2、学会配置schema.xml文件3、学会配置中文分词器4、学会solrj的使用5、完成京东案例3Solr介绍3.1 什么是solrSolr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。
Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
使用Solr 进行创建索引和搜索索引的实现方法很简单,如下:●创建索引:客户端(可以是浏览器可以是Java程序)用POST 方法向Solr 服务器发送一个描述Field 及其内容的XML 文档,Solr服务器根据xml文档添加、删除、更新索引。
●搜索索引:客户端(可以是浏览器可以是Java程序)用GET方法向Solr 服务器发送请求,然后对Solr服务器返回Xml、json等格式的查询结果进行解析,组织页面布局。
Solr不提供构建页面UI的功能,但是Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
3.2 Lucene和solr的区别4Solr下载安装4.1 下载Solr和lucene的版本是同步更新的,最新的版本是5.2.1本课程使用的版本:4.10.3下载地址:/dist/lucene/solr/下载版本:4.10.3bin:solr的运行脚本contrib:solr的一些扩展jar包,用于增强solr的功能。
dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
docs:solr的API文档example:solr工程的例子目录:●example/solr:该目录是一个标准的SolrHome,它包含一个默认的SolrCore●example/multicore:该目录包含了在Solr的multicore中设置的多个Core目录。
●example/webapps:该目录中包括一个solr.war,该war可作为solr的运行实例工程。
licenses:solr相关的一些许可信息4.2 配置solrhome和solrcore4.2.1SolrHome和SolrCoreSolrHome是Solr服务运行的主目录,该目录中包括了多个SolrCore目录。
SolrCore目录中包含了运行Solr实例所有的配置文件和数据文件,Solr实例就是SolrCore。
一个SolrHome可以包括多个SolrCore(Solr实例),每个SolrCore提供单独的搜索和索引服务。
4.2.2目录结构SolrHome目录:SolrCore目录:4.2.3创建solrcore创建solrcore先要创建solrhome,而创建solrhome只需要拷贝solr-4.10.3/example/solr到指定目录即可,然后修改名称为solrhome(改名非必须,便于理解)4.2.4配置solrcore需要配置solrhome/collection1/conf/solrconfig.xml文件,配置内容如下:lib标签、datadir标签、requestHandler标签4.2.4.1 l ib标签加载solr服务器需要的jar包。
solr.install.dir表示solrcore目录,比如solrhome\collection1 如果需要增强solr服务器的功能,那么需要将jar包添加到contrib目录,然后配置lib标签。
第一步:拷贝solr-4.10.3目录下的contrib和dist目录到solrhome同级目录下。
第二步:修改lib标签,如下:4.2.4.2 d atadir标签每个SolrCore都有自己的索引文件目录,默认在SolrCore目录下的data中。
data数据目录下包括了index索引目录和tlog日志文件目录。
如果不想使用默认的目录也可以通过solrConfig.xml更改索引目录,如下:4.2.4.3 r equestHandler标签配置solr服务器的请求处理比如:索引请求,它的配置如下:搜索请求,它的配置如下:4.3 安装solr前提:安装tomcat 7、安装jdk1.7及以上版本第一步:从solr-4.10.3\example\webapps目录下拷贝solr.war到tomcat的webapps目录下第二步:解压缩solr.war,启动tomcat就可以将war包解压缩,删除solr.war第三步:拷贝solr-4.10.3\example\lib\ext目录下所有jar包,然后复制到apache-tomcat-7.0.53-solr\webapps\solr\WEB-INF\lib目录下第四步:拷贝solr-4.10.3\example\resources目录下log4j.properties文件到apache-tomcat-7.0.53-solr\webapps\solr\WEB-INF\classes目录下,注意:classes目录默认不存在,需要手动创建第五步:配置solr服务器和solrhome的关联。
修改apache-tomcat-7.0.53-solr\webapps\solr\WEB-INF\web.xml,如果内容如下:第六步:重启tomcat,访问solr服务http://localhost:8080/solr4.4 管理界面功能介绍4.4.1Dashboard仪表盘,显示了该Solr实例开始启动运行的时间、版本、系统资源、jvm等信息。
4.4.2LoggingSolr运行日志信息4.4.3CloudCloud即SolrCloud,即Solr云(集群),当使用Solr Cloud模式运行时会显示此菜单,该部分功能在第二个项目,即电商项目会讲解。
4.4.4Core AdminSolr Core的管理界面。
在这里可以添加SolrCore实例。
4.4.5java propertiesSolr在JVM 运行环境中的属性信息,包括类路径、文件编码、jvm内存设置等信息。
4.4.6Tread Dump显示Solr Server中当前活跃线程信息,同时也可以跟踪线程运行栈信息。
4.4.7Core selector(重点)选择一个SolrCore进行详细操作,如下:4.4.7.1 A nalysis(重点)通过此界面可以测试索引分析器和搜索分析器的执行情况。
注:solr中,分析器是绑定在域的类型中的。
4.4.7.2 d ataimport可以定义数据导入处理器,从关系数据库将数据导入到Solr索引库中。
默认没有配置,需要手工配置。
4.4.7.3 D ocument(重点)通过/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。
通过此菜单可以创建索引、更新索引、删除索引等操作,界面如下:●overwrite="true" :solr在做索引的时候,如果文档已经存在,就用xml中的文档进行替换●commitWithin="1000" :solr 在做索引的时候,每个1000(1秒)毫秒,做一次文档提交。
为了方便测试也可以在Document中立即提交,</doc>后添加“<commit/>”4.4.7.4 Q uery(重点)通过/select执行搜索索引,必须指定“q”查询条件方可搜索。
4.5 配置多solrcore第一步:复制solrhome/collection1为collection2,也就是创建了一个新的solrcore,名称为collection2.第二步:修改collection2目录下的core.properties文件到此新的solrcore就创建成功。
配置多solrcore的好处:1、不同的solrcore可以单独提供索引和搜索服务2、配置多solrcore也是solrcloud集群的需要。
5Solr的基本使用5.1 Schema.xml该文件在solrhome\collection2\conf\schema.xml,该文件主要是配置solrcore的信息,该文件主要配置了域的类型、域等信息。
注意:在solr中域的使用需要先定义,再使用。
5.1.1Field标签<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />Name:指定域的名称Type:指定域的类型,是否分词取决于类型Indexed:是否索引Stored:是否存储Required:是否必须multiValued:是否允许多值。
比如存储商品图片,一个商品有多张图片,都需要存储到一个Field域中,必须设置multiValued为true。
5.1.2dynamicField动态域,就是通过通配符来定义Field。
<dynamicField name="*_ss" type="string" indexed="true" stored="true" multiValued="true"/>Name:指定该域的命名规则。
5.1.3uniqueKey唯一键,每个schema文件中,都必须有一个唯一键。
通过唯一键指定的id,必须是已经定义好的一个id域。
<uniqueKey>id</uniqueKey>5.1.4copyField复制域,即将原域的信息复制到目标域中。
<copyField source="cat" dest="text"/>Source:指定源域的名称Dest:指定目标域的名称注意:目标域,它必须设置multiValued为true。
5.1.5FieldTypeName:指定域的类型的名称Class:处理该域的类型的类Analyzer:指定分析器Type:Index、query,指定索引和搜索的分词器Tokenizer:指定分词器Filter:指定过滤器5.2 配置中文分词器中文分词器选用Ikanalyzer。