Solr开发指南

合集下载

solr使用流程

solr使用流程

solr使用流程Solr使用流程一、概述Solr是一个开源的企业级搜索平台,基于Apache Lucene构建。

它提供了强大的全文搜索、分布式搜索、面向文档的搜索和高级搜索功能。

Solr的使用流程可以分为以下几个步骤:准备环境、创建索引、搜索数据。

二、准备环境在开始使用Solr之前,首先需要准备好运行环境。

Solr可以运行在各种操作系统上,包括Windows、Linux和Mac OS。

在安装Solr 之前,确保已经安装了Java Development Kit(JDK),并配置好了JAVA_HOME环境变量。

然后,从Solr官网下载最新版本的Solr,并解压到本地目录中。

三、创建索引1. 定义Schema在开始创建索引之前,需要定义Schema。

Schema是Solr中的模式文件,用于定义索引字段的类型、分析器和其他属性。

可以使用任何文本编辑器打开schema.xml文件,并根据需求进行修改。

常见的字段类型包括文本类型、日期类型、布尔类型等。

2. 导入数据在定义好Schema之后,需要将数据导入到Solr中。

Solr支持多种数据导入方式,包括手动导入和自动导入。

手动导入可通过提交XML或JSON格式的数据来实现,而自动导入则可以通过配置数据源和定时任务来实现。

3. 创建索引数据导入完成后,即可创建索引。

在Solr中,索引是由一系列的文档组成,每个文档都包含多个字段。

可以使用Solr提供的API来创建索引,也可以使用Solr的客户端工具来操作。

创建索引的过程包括向Solr提交文档、更新索引和删除索引等操作。

四、搜索数据创建索引完成后,即可开始搜索数据。

Solr提供了丰富的搜索功能,可以通过关键字、范围、过滤条件等进行高级搜索。

可以使用Solr 提供的查询语法来构建查询语句,并通过HTTP请求将查询发送给Solr服务器。

Solr会返回与查询条件匹配的文档列表。

1. 构建查询语句在构建查询语句时,需要考虑搜索的字段、搜索的关键字和搜索的条件。

ApacheSolr入门教程(初学者之旅)

ApacheSolr入门教程(初学者之旅)

ApacheSolr⼊门教程(初学者之旅)Apache Solr⼊门教程(初学者之旅)写在前⾯:本⽂涉及solr⼊门的各⽅⾯,建议边思考边实践,相信能帮助你对solr有个清晰全⾯的了解并能简单实⽤。

在Apache Solr初学者教程的这个例⼦中,我们将讨论有关如何安装最新版本的Apache Solr,并告诉你如何配置它。

此外,我们将告诉你如何进⾏使⽤solr的样本数据⽂件索引。

Apache Solr⽀持不同格式,包括各种数据库,PDF⽂件,XML⽂件,CSV⽂件等等。

在这个例⼦中,我们将研究如何从⼀个CSV⽂件索引数据。

⾸选这个例⼦的环境是Windows。

开始Solr安装之前,确保你已经安装了JDK和正确配置JAVA_HOME。

1.为什么选择Apache SolrApache Solr是⼀个功能强⼤的搜索服务器,它⽀持REST风格API。

Solr是基于Lucene的,Lucene ⽀持强⼤的匹配能⼒,如短语,通配符,连接,分组和更多不同的数据类型。

它使⽤ Apache Zookeeper特别针对⾼流量进⾏优化。

Apache Solr提供各式各样的功能,我们列出了部分最主要的功能。

1. 先进的全⽂搜索功能。

2. XML,JSON和HTTP - 基于开放接⼝标准。

3. ⾼度可扩展和容错。

4. 同时⽀持模式和⽆模式配置。

5. 分页搜索和过滤。

6. ⽀持像英语,德语,中国,⽇本,法国和许多主要语⾔7. 丰富的⽂档分析。

2.安装Apache Solr要⾸先让从以下位置下载最新版本的Apache Solr:在撰写本⽂时,可⽤的稳定版本是5.0.0。

Apache Solr经历了从4.XX到5.0.0各种变化了,所以如果你有不同版本的Solr,你需要下载5.xx版本并以此为模板。

⼀旦Solr的zip⽂件下载将它解压缩到⼀个⽂件夹。

提取的⽂件夹看起来像下⾯。

Solr的⽂件夹bin⽂件夹中包含⽤来启动和停⽌服务器的脚本。

【solr开发文档】初始SolrJ开发, schema.xml的配置与服务初始化(1)

【solr开发文档】初始SolrJ开发, schema.xml的配置与服务初始化(1)
<?xmlversion="1.0"encoding="UTF-8"?>
<schemaname="example"version="1.5">
<fields>
<!--field属性说明:
filed字段用于定义数据源字段所使用的搜索类型与相关设置.
name:数据源字段名,搜索使用到.
type:搜索类型名例如中文ika搜索名text_ika,对应于fieldType中的name.不需要分词的字符串类型,string即可,如果需要分词,types中配置好的分词type。
<fieldTypename="float"class="solr.TrieFloatField"precisionStep="0"omitNorms="true"positionIncrementGap="0"/>
<fieldTypename="double"class="solr.TrieDoubleField"precisionStep="0"omitNorms="true"positionIncrementGap="0"/>
<!--defaultSearchField节点
默认搜索的字段,默认值为text,
如果我们已经将需要搜索的字段拷贝至all字段了,在这里设为all即可-->
<defaultSearchField>text</defaultSearchField>

Solr使用手册

Solr使用手册

Solr部署及开发一、部署1 环境要求JDK 1.6及以上版本,Tomcat 6及以上,Solr发布版本4.X。

如果使用较低版本,请查看Solr版本支持的JDK版本。

2安装步骤首先安装JDK 1.7和Tomcat 7,配置好环境变量,并下载最新版Solr,目前版本为4.6.0。

如有必要可手动修改Tomcat端口号。

为了支持中文,需要修改tomcat中conf目录下的server.xml文件,在connector 节点中添加字符编码属性URIEncoding,如下:<Connector port="8086" protocol="HTTP/1.1"connectionTimeout="20000" URIEncoding="UTF-8"redirectPort="8443" />◆运行在jetty服务器Solr可以运行在自带的jetty服务器,可按如下步骤运行起来:1、解压solr-4.6.0.zip到你想到存放的路径,比如:d:/solr2、cmd打开命令行窗口,进入d:/solr/example目录3、执行命令:java -jar start.jar4、通过第三步以后,系统会启动solr自带的jetty服务器,通过http://localhost:8983/solr/便可访问solr。

此时,solr已成功启动。

◆运行在Tomcat服务器1、solr.4.6.0.zip解压到指定的目录中,如d:/solr-4.6.0。

2、将d:/solr-4.6.0/example/webapps下的solr.war拷贝到tomcat–>weapps中。

3、新建文件夹d:/sorl_home,将d:/solr-4.6.0/example/solr目录拷贝至d:/sorl_home中,如果要配置为多核应用,可以将solr-4.6.0\example下的multicore拷贝到d:/sorl_home中,这样就会有就会有core0和core1两个应用。

Solr搜索文档说明

Solr搜索文档说明

Solr使用教程目录一、软件版本 (2)二、安装教程 (2)1、Solr安装教程 (2)2、solr环境搭建 (4)3、业务字段的实际配置 (7)4、dataimport 导入数据库数据 (8)5、solrj的使用 (10)6、电商平台的应用 (14)一、软件版本Solr版本号:solr-5.5.5jdk版本号:jdk1.8以上Tomcat版本号:Tomcat8.0以上二、安装教程1、Solr安装教程1.创建solrhome以及solrcore(mysolrhome、mycore 名字可以任意指定)1.1在指定的目录下新建文件夹solrhome如:D:\mysolrhome1.2将solr-5.5.4\server\solr\solr.xml拷贝至D:\mysolrhome1.3在solrhome下新建文件夹solrcore如D:\mysolrhome\mycore1.4将solr-5.5.4\server\solr\configsets\basic_configs\conf完整目录拷贝至D:\mysolrhome\mycore\下2.部署到Tomcat2.1将solr-5.5.4\server\solr-webapp\webapp 完整目录复制到Apache Tomcat 8.0.27\webapps下并重命名为solr2.2在Apache Tomcat 8.0.27\webapps\solr\WEB-INF下新建classes文件夹2.3将solr-5.5.4/server/resource/log4j.properties 拷贝至上一步创建的classes2.4把solr-5.5.4/server/lib/ext/目录下的所有jar文件复制到Apache Tomcat 8.0.27/webapp/solr/WEB-INF/lib/中3.配置solrcore3.1修改Apache Tomcat 8.0.27-solr\webapps\solr\WEB-INF\web.xml 新增<env-entry>标签,将你的solrhome配置进去。

solr配置及数据库及文档

solr配置及数据库及文档

一、准备数据1.去官网下载最新的solr。

当前最新为4.5版本。

2.准备tomcat7.(下载tomcat7)二、配置solr。

1.将下载的solr4.5解压得到:2.将example\solr-webapp 下的solr.war 放到tomcat的webapp下。

3.启动tomcat 此时报错,solr.war 解压关闭tomcat 删除solr.war4.得到solr 项目5.配置solr_home :将下载的solr包中解压的example/solr 文件夹copy到d:/solr/solr_home(路径可以任意修改)。

6.打开tomcat下的webapp\solr\WEB-INF 下的web.xml,修改添加如下代码:<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>D:/solr/solr_home</env-entry-value><env-entry-type>ng.String</env-entry-type></env-entry>7.其中<env-entry-value> 中的值即为第5步中配置的路径。

8.copy 下载包中的example\lib\ext 下的jar包全部放到tomcat 的lib 目录下。

9设置solr/collection/conf/中的solrconfig.xml 中jar包路径,将路径该对就可以了。

10.将C:\app\solr-4.5.0\solr-4.5.0\example\resources下的log4j.properties拷贝到C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\solr\WEB-INF\classes下。

solrj操作文档

solrj操作文档

1. 设置pom.xml找到工程的pom.xml文件,增加依赖<dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>4.7.2</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.5</version></dependency>其需要依赖的JAR包包含因一般工程里都会引用这些依赖jar包,在这里就不做pom.xml里的配置了,大家参照上面的图增加依赖和替换版本即可。

2. 设置solrcloud.properties∙在工程中新增properties配置,内容为solr.solrcloudServer=192.168.169.129:2181,192.168.169.12:2181,192.168.169.15:218 1/bjksolr.zkClientTimeout=2000solr.zkConnectTimeout=2000solr.solrcloudServer:是solrcloud的zookeeper配置信息solr.zkClientTimeout:当前应用与zookeeper连接超时时间solr.zkConnectTimeout:当前应用与zookeeper连接超时时间3. 增加java文件∙在工程中util目录下增加SolrCloudUtils.java4. 修改applicationContext.xml文件∙找到spring主配置文件applicationContext.xml,增加如下配置<!--红色位置为项目中solrcloud.properties文件的实际位置--><context:property-placeholder ignore-resource-not-found="true"location="classpath*:/environments/development/solrcloud.properties" /><!--红色位置为项目中SolrCloudUtils.java文件的实际包路径--><beanname="solrCloudUtils"class="com.jd.sph.report.service.solr.SolrCloudUtils"><property name="solrcloudServer" value="${solr.solrcloudServer}"></property><property name="zkClientTimeout" value="${solr.zkClientTimeout}"></property> <property name="zkConnectTimeout"value="${solr.zkConnectTimeout}"></property></bean>5. 操作solrj新建和查询索引在需要操作solrj的类上增加依赖注解信息@Resourceprivate SolrCloudUtils solrCloudUtils;查询索引/*** 从solr查询每日入库* @param query* @param page* @return*/public Page<InBoundPo> selectInBoundDayBySolr(PanYingDetailQueryVo query ,Page<InBoundPo> page){//设置查询条件SolrQuery solrQuery = new SolrQuery();StringBuffer queryStr = new StringBuffer("io:1 AND status:4 AND upDownTime:[2014-10-01T00:00:00Z TO 2015-10-01T00:00:00Z]");if(query.getOrgId()!=null && query.getOrgId()>0){queryStr.append(" AND newIdCompany:"+query.getOrgId());}if(query.getStoreId()!=null && query.getStoreId()>0){queryStr.append(" AND storeAttr:"+query.getStoreId());}System.out.println("查询参数"+queryStr);//设置查询条件solrQuery.setQuery(queryStr.toString());//设置查询分页条件solrQuery.set("start",(page.getPageNo()-1)*page.getPageSize());solrQuery.set("rows",page.getPageSize());//设置查询排序solrQuery.setSort("upDownTime",SolrQuery.ORDER.desc);List<InBoundPo> list = new ArrayList<InBoundPo>();CloudSolrServer cloudSolrServer = null;try {//根据core名称获取solrCloud连接cloudSolrServer = solrCloudUtils.getCloundSolrServer("transferdetail");QueryResponse res = cloudSolrServer.query(solrQuery);SolrDocumentList docs = res.getResults();InBoundPo inBoundPo = null;//循环将索引文档的信息转换到实体对象中for(SolrDocument doc:docs){inBoundPo = new InBoundPo();inBoundPo.setInBoundCode((Integer)doc.getFieldValue("transfer_id"));inBoundPo.setOrgId((Integer)doc.getFieldValue("NewIdCompany"));inBoundPo.setInType((Integer)doc.getFieldValue("type"));inBoundPo.setStoreName((String)doc.getFieldValue("storeName"));inBoundPo.setIdPart((String)doc.getFieldValue("idPart"));inBoundPo.setWareName((String)doc.getFieldValue("wareName"));inBoundPo.setWareId((Integer)doc.getFieldValue("wareId"));inBoundPo.setCid1((Integer)doc.getFieldValue("cid1"));inBoundPo.setCid2((Integer) doc.getFieldValue("cid2"));inBoundPo.setCid3((Integer) doc.getFieldValue("cid3"));inBoundPo.setSupplierID((String)doc.getFieldValue("supplierID"));if((String)doc.getFieldValue("price")!=null){inBoundPo.setCostPrice(newBigDecimal((String)doc.getFieldValue("price")));}inBoundPo.setLossType((Integer) doc.getFieldValue("losstype"));inBoundPo.setXmlAttaches((String)doc.getFieldValue("xmlAttaches"));inBoundPo.setSalesPin((String)doc.getFieldValue("salesPin"));list.add(inBoundPo);}long numFound = docs.getNumFound();page.setTotalCount(numFound);System.out.println("查询总数量:"+numFound);System.out.println("查询耗费时间:"+res.getQTime());page.setResult(list);} catch (SolrServerException e) {e.printStackTrace();} finally {//关闭solrCloud连接cloudSolrServer.shutdown();}return page;}新增索引//创建solrserver连接CloudSolrServer solrServer=solrCloudUtils.getCloundSolrServer("transferdetail");//需要提交的索引集合Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();SolrInputDocument doc = null;//获取transfer和defstore信息for(BigEntity bigEntity:list){doc = new SolrInputDocument();//afs_transferdoc.addField("transfer_id", bigEntity.getTransfer_id());doc.addField("idStoreFrom", bigEntity.getIdStoreFrom());doc.addField("idStoreTo", bigEntity.getIdStoreTo());doc.addField("type", bigEntity.getType());doc.addField("io", bigEntity.getIo());doc.addField("status", bigEntity.getStatus());doc.addField("yn", bigEntity.getYn());doc.addField("fromPin", bigEntity.getFromPin());doc.addField("fromName", bigEntity.getFromName());if(bigEntity.getFromTime()!=null){doc.addField("fromTime", solrUtil.solrTime(bigEntity.getFromTime()));}doc.addField("fromNotes", bigEntity.getFromNotes());doc.addField("toPin", bigEntity.getToPin());doc.addField("toName", bigEntity.getToName());if(bigEntity.getToTime()!=null){doc.addField("toTime", solrUtil.solrTime(bigEntity.getToTime()));}doc.addField("toNotes", bigEntity.getToNotes());doc.addField("idCompany", bigEntity.getIdCompany());doc.addField("kdanhao", bigEntity.getKdanhao());doc.addField("istemp", bigEntity.getIstemp());doc.addField("getWare", bigEntity.getGetWare());doc.addField("newIdCompany", bigEntity.getNewIdCompany());doc.addField("idStore", bigEntity.getIdStore());if(bigEntity.getTimeUpdated()!=null){doc.addField("timeUpdated",solrUtil.solrTime(bigEntity.getTimeUpdated()));}doc.addField("manUpdated", bigEntity.getManUpdated());doc.addField("storeFrom", bigEntity.getStoreFrom());doc.addField("storeTo", bigEntity.getStoreTo());doc.addField("isApproved", bigEntity.getIsApproved());if(bigEntity.getUpDownTime()!=null){doc.addField("upDownTime",solrUtil.solrTime(bigEntity.getUpDownTime()));}doc.addField("inventory_status", bigEntity.getInventory_status());doc.addField("inventory_name", bigEntity.getInventory_name());doc.addField("inventory_pin", bigEntity.getInventory_pin());doc.addField("inventory_check_notes",bigEntity.getInventory_check_notes());if(bigEntity.getInventory_time()!=null){doc.addField("inventory_time",solrUtil.solrTime(bigEntity.getInventory_time()));}doc.addField("ts", bigEntity.getTs());doc.addField("rfidType", bigEntity.getRfidType());docs.add(doc);}//提交到solrcloudsolrServer.add(docs);mit();//关闭solrcloud连接solrServer.shutdown();注意:时间处理需要将时间转换为yyyy-MM-dd T hh:mm:ss:Z千万不要忘了T和Z因为SOLR存储索引的时候,默认是以格林威治时间进行存储,当创建索引的时候,时间会减去8小时,所以为了保证时间一致性,我们在操作时间的时候,要么在创建索引时时间增加8小时,要么在查询时,时间减去8小时。

银河麒麟服务器操作系统 V4 solr 软件适配手册说明书

银河麒麟服务器操作系统 V4 solr 软件适配手册说明书

银河麒麟服务器操作系统V4 solr软件适配手册天津麒麟信息技术有限公司2019年6月目录目录 (I)1概述 (2)1.1系统概述 (2)1.2环境概述 (2)1.3SOLR软件简介 (2)1.4SOLR优点 (2)1.5SOLR架构及原理 (3)1.5.1全文检索 (3)1.5.2索引创建和搜索过程 (3)2SOLR软件适配 (4)1)下载并解压SOLR (4)2)下载TOMCAT (4)3)准备依赖包 (4)4)配置SOLRHOME (5)5)配置TOMCAT (5)3验证SOLR部署 (6)1概述1.1系统概述银河麒麟服务器操作系统主要面向军队综合电子信息系统、金融系统以及电力系统等国家关键行业的服务器应用领域,突出高安全性、高可用性、高效数据处理、虚拟化等关键技术优势,针对关键业务构建的丰富高效、安全可靠的功能特性,兼容适配长城、联想、浪潮、华为、曙光等国内主流厂商的服务器整机产品,以及达梦、金仓、神通、南大通用等主要国产数据库和中创、金蝶、东方通等国产中间件,满足虚拟化、云计算和大数据时代,服务器业务对操作系统在性能、安全性及可扩展性等方面的需求,是一款具有高安全、高可用、高可靠、高性能的自主可控服务器操作系统。

1.2环境概述服务器型号长城信安擎天DF720服务器CPU类型飞腾2000+处理器操作系统版本Kylin-4.0.2-server-sp2-2000-19050910.Z1内核版本 4.4.131solr版本7.7.21.3solr软件简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service 的API接口。

用户可以通过http请求,向搜索引擎服务器提交一定格式的XML 文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。

同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

Solr单机版搭建

Solr单机版搭建

1.搜索工程搭建表现层服务层持久层要实现搜索功能,需要搭建solr服务、搜索服务工程、搜索系统1.1.S olr服务搭建1.1.1.Solr的环境Solr是java开发。

需要安装jdk。

安装环境Linux。

需要安装Tomcat。

1.1.2.搭建步骤第一步:把solr 的压缩包上传到Linux系统第二步:解压solr。

第三步:安装Tomcat,解压缩即可。

第四步:把solr部署到Tomcat下。

第五步:解压缩war包。

启动Tomcat解压。

第六步:把/root/solr-4.10.3/example/lib/ext目录下的所有的jar包,添加到solr工程中。

[root@localhost ext]# pwd/root/solr-4.10.3/example/lib/ext[root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/第七步:创建一个solrhome。

/example/solr目录就是一个solrhome。

复制此目录到/usr/local/solr/solrhome[root@localhost example]# pwd/root/solr-4.10.3/example[root@localhost example]# cp -r solr /usr/local/solr/solrhome[root@localhost example]#第八步:关联solr及solrhome。

需要修改solr工程的web.xml文件。

第九步:启动Tomcathttp://192.168.25.154:8080/solr/和windows下的配置完全一样。

1.1.3.Solr的使用添加文档必须有id域,其他域必须在solr的schema.xml中定义。

1.2.配置业务域schema.xml中定义1、商品Id2、商品标题3、商品卖点4、商品价格5、商品图片6、分类名称7、商品描述创建对应的业务域。

SOLR中文教程

SOLR中文教程

SOLR中文帮助文档2010-10目录1概述 (4)1.1企业搜索引擎方案选型 (4)1.2Solr的特性 (4)1.2.1Solr使用Lucene并且进行了扩展 (4)1.2.2Schema(模式) (5)1.2.3查询 (5)1.2.4核心 (5)1.2.5缓存 (5)1.2.6复制 (6)1.2.7管理接口 (6)1.3Solr服务原理 (6)1.3.1索引 (6)1.3.2搜索 (7)1.4源码结构 (8)1.4.1目录结构说明 (8)1.4.2Solr home说明 (9)1.4.3solr的各包的说明 (10)1.5版本说明 (11)1.5.1 1.3版本 (11)1.5.2 1.4版本 (12)1.6分布式和复制Solr 架构 (12)2Solr的安装与配置 (13)2.1在Tomcat下Solr安装 (13)2.1.1安装准备 (13)2.1.2安装过程 (13)2.1.3验证安装 (14)2.2中文分词配置 (15)2.2.1mmseg4j (15)2.2.2paoding (19)2.3多核(MultiCore)配置 (22)2.3.1MultiCore的配置方法 (22)2.3.2为何使用多core ? (23)2.4配置文件说明 (23)2.4.1schema.xml (24)2.4.2solrconfig.xml (25)3Solr的应用 (29)3.1SOLR应用概述 (29)3.1.1Solr的应用模式 (29)3.1.2SOLR的使用过程说明 (30)3.2一个简单的例子 (30)3.2.1Solr Schema 设计 (30)3.2.2构建索引 (30)3.2.3搜索测试 (31)3.3搜索引擎的规划设计 (32)3.3.1定义业务模型 (32)3.3.2定制索引服务 (34)3.3.3定制搜索服务 (34)3.4搜索引擎配置 (34)3.4.1Solr Schema 设计(如何定制索引的结构?) (34)3.5如何进行索引操作? (36)3.5.1基本索引操作 (36)3.5.2批量索引操作 (37)3.6如何进行搜索 (39)3.6.1搜索语法 (39)3.6.2排序 (42)3.6.3字段增加权重 (42)3.6.4Solr分词器、过滤器、分析器 (42)3.6.5Solr高亮使用 (46)4SolrJ的用法 (46)4.1搜索接口的调用实例 (46)4.2Solrj的使用说明 (47)4.2.1Adding Data to Solr (47)4.2.2Directly adding POJOs to Solr (49)4.2.3Reading Data from Solr (51)4.3创建查询 (51)4.4使用SolrJ 创建索引 (52)4.5Solrj包的结构说明 (53)4.5.1CommonsHttpSolrServer (53)4.5.2Setting XMLResponseParser (53)4.5.3Changing other Connection Settings (53)4.5.4EmbeddedSolrServer (54)5Solr的实际应用测试报告 (54)5.1线下压力测试报告 (54)5.2线上环境运行报告 (54)6solr性能调优 (55)6.1Schema Design Considerations (55)6.1.1indexed fields (55)6.1.2stored fields (55)6.2Configuration Considerations (55)6.2.1mergeFactor (55)6.2.2mergeFactor Tradeoffs (56)6.3Cache autoWarm Count Considerations (56)6.4Cache hit rate(缓存命中率) (56)6.5Explicit Warming of Sort Fields (56)6.6Optimization Considerations (56)6.7Updates and Commit Frequency Tradeoffs (56)6.8Query Response Compression (57)6.9Embedded vs HTTP Post (57)6.10RAM Usage Considerations(内存方面的考虑) (57)6.10.1OutOfMemoryErrors (57)6.10.2Memory allocated to the Java VM (57)7FAQ (58)7.1出现乱码或者查不到结果的排查方法: (58)概述企业搜索引擎方案选型由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择:基于Lucene自己进行封装实现站内搜索。

SolrCloud第一讲

SolrCloud第一讲

SolrCloud第一讲1目标使用solr实现电商网站的搜索功能。

2解决方案2.1方案一使用数据库搜索。

关系型数据库mysql、oracle等。

使用关系型数据库搜索商品信息,商品标题中包含关键的商品。

Select * from 商品表 where 商品标题 like ‘%冲锋衣%’海量数据中搜索速度非常慢,顺序扫描。

Like是否能使用索引?%%:不能使用索引关键词%:可以使用索引。

如果字段的长度大于255个字符,是不能创建索引的。

2.2方案二使用全文检索的方式来进行搜索。

在整篇文章中快速找到某些关键词提出的解决方案。

例如百度搜索、谷歌搜索、电商搜索。

好处:快、准确。

在数据库中搜索java关键词:使用like搜索JavaScript会被搜索出来,不符合预期。

在百度中搜索java:JavaScript不会被搜索出来。

技术方案:1、Lucene:使用java开发的全文检索工具包。

需要在Lucene基础上进行二次开发。

需要自己解决集群的问题、缓存的问题、大数据的问题。

2、Solr:使用Java开发的全文检索服务器。

基于Lucene的api开发。

只需要配置就可以实现全文检索。

3什么是Solr?Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。

Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。

Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。

Solr不提供构建UI 的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

solr使用方法

solr使用方法

solr使用方法Solr是一种开源的搜索平台,基于Apache Lucene构建而成。

它提供了强大的全文检索功能和高性能的分布式搜索能力,广泛应用于各种大型网站和企业应用中。

本文将介绍Solr的使用方法,包括安装配置、数据导入、搜索查询等方面。

一、安装配置1. 下载Solr:访问官方网站,下载最新版本的Solr压缩包。

2. 解压缩:将下载的压缩包解压到指定目录。

3. 启动Solr:进入解压后的目录,执行启动命令,等待Solr启动成功。

4. 访问Solr管理界面:打开浏览器,输入Solr的地址和端口号,进入Solr的管理界面。

二、数据导入1. 创建Core:在Solr管理界面中,创建一个Core,用于存储和管理数据。

2. 定义Schema:在Core中定义Schema,指定数据的字段类型、索引配置等。

3. 导入数据:将数据准备好,使用Solr提供的数据导入工具,将数据导入到Core中。

三、搜索查询1. 构建查询请求:使用Solr提供的查询语法,构建查询请求。

2. 发送查询请求:将查询请求发送给Solr服务器,等待返回结果。

3. 解析查询结果:解析返回的结果,获取需要的信息。

四、高级功能1. 分页查询:通过设置start和rows参数,实现分页查询功能。

2. 排序:通过设置sort参数,实现结果的排序。

3. 过滤查询:通过设置fq参数,实现对结果的过滤。

4. 高亮显示:通过设置hl参数,实现搜索关键词的高亮显示。

5. 聚合统计:通过设置facet参数,实现对搜索结果的聚合统计。

五、性能优化1. 索引优化:通过优化索引结构、字段配置等,提升索引的性能。

2. 查询优化:通过合理使用缓存、调整查询参数等,提升查询的性能。

3. 集群部署:将Solr部署到多台服务器上,实现分布式搜索,提升系统的吞吐量和可用性。

六、常见问题解决1. 乱码问题:通过设置字符集、使用适当的分词器等,解决乱码问题。

2. 性能问题:通过调整配置参数、优化查询语句等,解决性能问题。

Java搜索服务Solr操作指南

Java搜索服务Solr操作指南

Java搜索服务Solr操作指南Java搜索服务Solr操作指南 (1)1. 什么是Solr (3)2. Solr服务器搭建与配置 (3)2.1. 服务器搭建 (3)2.2. 配置业务域 (4)2.3. 删除所有数据(扩充,可不了解) (5)3. Java中SolrJ的使用 (6)3.1. SolrJ使用前配置 (6)3.2. 添加文档 (6)3.3. 删除文档 (7)3.3.1. 根据id删除 (7)3.3.2. 根据查询删除 (7)3.3. 查询索引库 (8)3.3.1. 简单查询 (8)3.3.2. 带高亮显示查询 (9)4. 关于Solr集群SolrCloud (10)5. Solr集群的搭建 (11)5.1. Zookeeper集群搭建 (11)5.2. Solr集群的搭建 (13)5.3. Solr集群分片与删除处理 (14)6. 使用SolrJ操作集群 (14)6.1. SolrJ使用前配置 (14)6.2. 添加文档 (15)6.3. 查询文档 (15)1. 什么是SolrSolr是一个独立的基于全文检索的企业级搜索应用服务器。

将文档通过Http 利用XML加载到Solr的搜索集合中;然后用户通过Http Get操作发送查找请求,并得到搜索的返回结果。

2. Solr服务器搭建与配置2.1. 服务器搭建Solr是由Java开发的,所以服务器的搭建需要Java环境,同时这里介绍在Linux系统中采用Tomcat进行Solr服务搭建步骤。

步骤如下:第一步:准备Tomcat压缩包和Solr压缩包第二步:上传到Linux系统,并解压两个压缩包。

第三步:找到Solr解压包目录中的/example/webapps/solr.war文件复制到tomcat解压包目录中的/webapps文件夹下,然后cd到tomcat的bin目录,运行tomcat,将会自动把solr.war文件进行解压。

第四步:将Solr解压包目录/example/lib/ext/中的所有jar包复制到刚刚解压的solr工程目录路径/WEB-INF/lib/的文件夹下面。

Module 16 Solr二次开发

Module 16 Solr二次开发

版权所程序
Windows下运行: 在开发环境中(例如Eclipse中),单击运行按钮对应的应用程序工程。或者右键工程,选择“Run as > Java Application”运行应用工程。
Linux下运行: ●在应用开发环境中,导出Solr应用可执行包。并在Linux客户端环境中,由java命令执行。 1、在eclipse中,右键选择工程,选择export。 2、选择导出“JAR file”。 3、选择包的导出路径,单击“Next”,并选择main函数入口类。 4、将应用开发环境中所依赖的lib目录以及conf目录拷贝至客户端运行环境的任意目录下,例如 “/opt/solr-example”,然后将应用环境中刚生成的Jar包拷贝至“/opt/solr-example/lib/”目录下。 5、在客户端,切到拷贝目录,使用命令cd /opt/ solr-example。执行命令,如java –cp /opt/solr-example/lib/*:/opt/solr-example/conf/ com.huawei.fusioninsight.solr.example.TestSample,运行样例工程。
Solr二次开发

版权所有© 2015 华为技术有限公司
前言

本章主要对Solr组件的二次开发的流程以及常用接口等进行 简单介绍
版权所有© 2015 华为技术有限公司
第1页
目标

学完本课程后,您将能够:

了解Solr二次开发的流程

了解Solr常用接口的使用
版权所有© 2015 华为技术有限公司
2、添加doc
public void addDocs() { try { SolrInputDocument doc1 = new SolrInputDocument(); doc1.addField("id", "1"); doc1.addField("name", "张三"); SolrInputDocument doc2 = new SolrInputDocument(); doc2.addField("id", "2"); doc2.addField("name", "李四"); List<SolrInputDocument> docs = new ArrayList<>(); docs.add(doc1); docs.add(doc2); cloudSolrServer.add(docs); mit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }

【solr开发文档】solrJ开发中JavaBean与solrInputDocument对象之间的转换(2)

【solr开发文档】solrJ开发中JavaBean与solrInputDocument对象之间的转换(2)
} catch (Exception e) { LOG.error("Add convert object list to index error, " + e.getMessage(), e);
} }
测试自定义转换对象建立索引. @Test public void addConvertBean(){ Article article1 = new Article(); article1.setId(UUID.randomUUID().toString()); List<String> title = new ArrayList<String>(); title.add("我在门后假装你人还没走"); article1.setTitle(title); article1.setAuthor("周杰伦"); SolrEngineHandler.addConvertBean(server, article1);
import ng.builder.ToStringBuilder; import org.apache.solr.client.solrj.beans.Field;
public class Article implements Serializable{
/** * */ private static final long serialVersionUID = 4017316764889231758L;
Article art2 = new Article(); art2.setId(UUID.randomUUID().toString()); List<String> atlts2 = new ArrayList<String>(); atlts2.add("萧萧衷曲无处诉;为伊故,乐所苦。"); atlts2.add("锦色芳华,岂堪人虚度?欲寄相思情万缕,捎不到,君心处。"); art2.setTitle(atlts2); art2.setAuthor("柳梦璃"); lists.add(art2); SolrEngineHandler.addConvertBeans(server, lists); }

Solr使用入门指南

Solr使用入门指南

Solr使用入门指南Solr使用入门指南1.引言1.1 Solr简介1.2 Solr的主要特性1.3 Solr的应用场景2.安装和配置2.1 系统要求2.2 Solr2.3 安装Solr2.4 配置Solr3.索引和查询数据3.1 创建索引3.2 添加和更新文档3.3 查询和过滤数据3.4 排序和分页3.5 删除文档和索引3.6 事务和并发控制4.Schema和字段类型4.1 Schema.xml文件4.2 字段类型4.3 动态字段4.4 字段属性5.过滤器和分析器5.1 Tokenizer和TokenFilter 5.2 内置的过滤器和分析器5.3 自定义过滤器和分析器6.查询解析器6.1 自然语言查询解析器6.2 布尔查询解析器6.3 Phrase查询解析器6.4 范围查询解析器6.5 多关键词查询解析器7.高级搜索功能7.1 Faceted Search7.2 Spatial Search7.3 拼写检查7.4 查询建议8.分布式Solr8.1 分片和副本8.2 集群配置8.3 分布式索引和查询9.性能调优9.1 索引性能优化9.2 查询性能优化9.3 缓存调优9.4 硬件优化10.监控和管理10.1 Solr的监控工具 10.2 日志管理10.3 Solr的安全机制10.4 Solr的备份和恢复11.示例应用11.1 e-commerce应用11.2 新闻搜索应用11.3 电子图书馆应用12.附件本文档涉及附件。

法律名词及注释:- Solr:一种开源搜索平台,基于Apache Lucene构建,提供强大的全文搜索、分布式搜索和大数据处理能力。

- Schema:Solr中定义索引结构的配置文件,用于指定字段类型、字段属性等。

- Tokenizer:将输入文本拆分为单词或单个词组的组件。

- TokenFilter:对输入单词进行处理的组件,例如大小写转换、词根化等。

- Faceted Search:分层搜索,允许用户根据多个分类维度进行搜索。

Solr入门实战(4)--Java操作Solr

Solr入门实战(4)--Java操作Solr

Solr⼊门实战(4)--Java操作Solr本⽂主要介绍使⽤ Java 来操作 Solr,⽂中所使⽤到的软件版本:Java 1.8.0_191、Solr 8.9.0。

1、定义 Schema 信息假设⼀个描述诗⼈信息的⽂档包含如下字段:字段描述id唯⼀主键age年龄name姓名poems诗歌about简介success成就定义的 schema 信息如下:<field name="about" type="text_ik" uninvertible="true" indexed="true" stored="true"/><field name="age" type="pint" uninvertible="true" indexed="true" stored="true"/><field name="content" type="text_ik" uninvertible="true" indexed="true" stored="true" multiValued="true"/><field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/><field name="name" type="text_ik" uninvertible="true" indexed="true" stored="true"/><field name="poems" type="text_ik" uninvertible="true" indexed="true" stored="true"/><field name="success" type="text_ik" uninvertible="true" indexed="true" stored="true"/>2、Java 操作 Solr2.1、引⼊依赖<dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>8.9.0</version></dependency><dependency><groupId>org.apache.solr</groupId><artifactId>solr-core</artifactId><version>8.9.0</version></dependency>2.2、编写 demo2.2.1、增加/更新⽂档@Testpublic void update() throws IOException, SolrServerException {SolrInputDocument document = new SolrInputDocument();document.addField("id", "123456");document.addField("age", 30);document.addField("name", "李⽩2");document.addField("poems", "望庐⼭瀑布");document.addField("about", "字太⽩");document.addField("success", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度");SolrInputDocument document2 = new SolrInputDocument();document2.addField("id", "123457");document2.addField("age", 31);document2.addField("name", "杜甫");document2.addField("poems", "望岳");document2.addField("about", "字⼦美");document2.addField("success", "唐代伟⼤的现实主义⽂学作家,唐诗思想艺术的集⼤成者");solrClient.add(coreName, document);solrClient.add(coreName, document2);mit(coreName, true,true);}还可以通过实体类来增加/更新⽂档:@Testpublic void update2() throws IOException, SolrServerException {PoetInfo info = new PoetInfo("123456", 40, "李⽩", "望庐⼭瀑布", "字太⽩", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度"); solrClient.addBean(coreName, info);mit(coreName, true,true);}2.2.2、查询⽂档/*** 通过 MapSolrParams 查询*/@Testpublic void query() throws IOException, SolrServerException {Map<String, String> map = new HashMap<>();//查询条件map.put("q", "*:*");//要显⽰的内容map.put("fl", "id,age,name,poems");//排序⽅式map.put("sort", "id asc");MapSolrParams solrParams = new MapSolrParams(map);QueryResponse queryResponse = solrClient.query(coreName, solrParams); SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 通过 solrQuery 查询*/@Testpublic void query2() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery); SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 查询返回实例类对象*/@Testpublic void query3() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addField("about");solrQuery.addField("success");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery); List<PoetInfo> list = queryResponse.getBeans(PoetInfo.class);("查询到{}个⽂档!", list.size());for (PoetInfo info : list) {(info.toString());}}2.2.3、删除⽂档/*** 根据id删除⽂档*/@Testpublic void delete() throws IOException, SolrServerException {solrClient.deleteById(coreName, "123456");mit(coreName, true,true);}/*** 根据查询删除⽂档*/@Testpublic void delete2() throws IOException, SolrServerException {solrClient.deleteByQuery(coreName, "name:杜甫");mit(coreName, true,true);}2.2.4、完整代码package com.abc.demo.general.solr;import org.apache.solr.client.solrj.beans.Field;public class PoetInfo {@Fieldprivate String id;@Fieldprivate Integer age;@Fieldprivate String name;@Fieldprivate String poems;@Fieldprivate String about;@Fieldprivate String success;public PoetInfo() {}public PoetInfo(String id, Integer age, String name, String poems, String about, String success) { this.id = id;this.age = age; = name;this.poems = poems;this.about = about;this.success = success;}@Overridepublic String toString() {return "Info{" +"id='" + id + '\'' +", age=" + age +", name='" + name + '\'' +", poems='" + poems + '\'' +", about='" + about + '\'' +", success='" + success + '\'' +'}';}public String getId() {return id;}public void setId(String id) {this.id = id;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getAbout() {return about;}public void setAbout(String about) {this.about = about;}public String getSuccess() {return success;}public void setSuccess(String success) {this.success = success;}}PoetInfopackage com.abc.demo.general.solr;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.impl.HttpSolrClient;import org.apache.solr.client.solrj.response.QueryResponse;import mon.SolrDocument;import mon.SolrDocumentList;import mon.SolrInputDocument;import mon.params.MapSolrParams;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;public class SolrCase {private static Logger logger = LoggerFactory.getLogger(SolrCase.class);private HttpSolrClient solrClient;private String coreName = "new_core";@Beforepublic void before() {solrClient = new HttpSolrClient.Builder("http://10.40.100.69:8983/solr").withConnectionTimeout(10000).withSocketTimeout(60000).build();}@Afterpublic void after() throws IOException {solrClient.close();}@Testpublic void update() throws IOException, SolrServerException {SolrInputDocument document = new SolrInputDocument();document.addField("id", "123456");document.addField("age", 30);document.addField("name", "李⽩2");document.addField("poems", "望庐⼭瀑布");document.addField("about", "字太⽩");document.addField("success", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度"); SolrInputDocument document2 = new SolrInputDocument();document2.addField("id", "123457");document2.addField("age", 31);document2.addField("name", "杜甫");document2.addField("poems", "望岳");document2.addField("about", "字⼦美");document2.addField("success", "唐代伟⼤的现实主义⽂学作家,唐诗思想艺术的集⼤成者");solrClient.add(coreName, document);solrClient.add(coreName, document2);mit(coreName, true,true);}@Testpublic void update2() throws IOException, SolrServerException {PoetInfo info = new PoetInfo("123456", 40, "李⽩", "望庐⼭瀑布", "字太⽩", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度"); solrClient.addBean(coreName, info);mit(coreName, true,true);}/*** 通过 MapSolrParams 查询*/@Testpublic void query() throws IOException, SolrServerException {Map<String, String> map = new HashMap<>();//查询条件map.put("q", "*:*");//要显⽰的内容map.put("fl", "id,age,name,poems");//排序⽅式map.put("sort", "id asc");MapSolrParams solrParams = new MapSolrParams(map);QueryResponse queryResponse = solrClient.query(coreName, solrParams);SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 通过 solrQuery 查询*/@Testpublic void query2() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery);SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 查询返回实例类对象*/@Testpublic void query3() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addField("about");solrQuery.addField("success");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery);List<PoetInfo> list = queryResponse.getBeans(PoetInfo.class);("查询到{}个⽂档!", list.size());for (PoetInfo info : list) {(info.toString());}}/*** 根据id删除⽂档*/@Testpublic void delete() throws IOException, SolrServerException {solrClient.deleteById(coreName, "123456");mit(coreName, true,true);}/*** 根据查询删除⽂档*/@Testpublic void delete2() throws IOException, SolrServerException {solrClient.deleteByQuery(coreName, "name:杜甫");mit(coreName, true,true);}}SolrCase3、Java 操作 SolrCloudJava 操作 SolrCloud 与 Java 操作 Solr 很类似,主要区别有:1、连接使⽤的类不同,连接 Solr 使⽤的是 HttpSolrClient,连接 SolrColud 使⽤的是 CloudHttp2SolrClient。

solr基本操作手册

solr基本操作手册

Solr基本操作手册1.solr安装及配置1.1 solr下载地址/solr/1.2环境配置Tomcat7 + jdk1.7 + solr4.9注:solr 4.8及以上必须要jdk1.7或者以上才能正确编译如果使用jdk1.6或者以下的话使用tomcat运行solr时会报错:Exception starting filter SolrRequestFilterng.UnsupportedClassVersionError:org/apache/solr/servlet/SolrDispatchFilter: Unsupported major.minor version 51.0 (unable to load class org.apache.solr.servlet.SolrDispatchFilter)1.3 solr安装及配置步骤1.将下载下来的solr压缩包解压,解压后的目录结构如下图:2.将solr-4.9.0/example/文件夹下的solr文件夹放到你硬盘中的某个位置。

3.将solr-4.9.0/example/webapps/目录下的solr.war复制到tomcat/webapp目录下,然后启动tomcat,solr.war会自动解压,webapp目录下将会出现solr目录, 在该目录下找到WEB-INF文件夹,修改文件夹下的web.xml文件,在文件中加入:<env-entry><env-entry-name>solr/home</env-entry-name><!—此处为第2步solr文件夹存放位置--><env-entry-value>D:\tomcat7\solrapp\solr</env-entry-value><env-entry-type>ng.String</env-entry-type></env-entry>4.将solr-4.9.0/example/lib/ext目录下的jar包拷贝到tomcat/webapp/solr/WEB-INF/lib下面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Solr全文检索技术1.Solr介绍 152.Solr安装配置-SolrCore配置 153.Solr安装配置-Solr工程部署 104.Solr安装配置-Solr工程测试 155.Solr安装配置-多SorlCore配置 106.Solr入门--schema 207.Solr入门-安装中文分词器 158.Solr入门-自定义业务系统Field 209.Solr入门-SolrJ介绍1010.Solr入门-SolrJ索引维护 2011.Solr入门-数据导入处理器2012.Solr入门-搜索语法 1013.Solr入门-SolrJ-搜索 2014.Solr案例-需求分析 1015.Solr案例-架构设计 1516.Solr案例-Service 2017.Solr案例-Controller 2018.Solr案例-主体调试 2019.Solr案例-功能完善1【Solr介绍】1.1S olr是什么Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。

Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。

Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。

Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

1.2S olr与Lucene的区别Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。

Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。

1.3Solr下载从Solr官方网站(/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip。

Solr使用指南可参考:https:///solr/FrontPage。

下载solr-4.10.3.zip并解压:bin:solr的运行脚本contrib:solr的一些贡献软件/插件,用于增强solr的功能。

dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。

docs:solr的API文档example:solr工程的例子目录:●example/solr:该目录是一个包含了默认配置信息的Solr的Core目录。

●example/multicore:该目录包含了在Solr的multicore中设置的多个Core目录。

●example/webapps:该目录中包括一个solr.war,该war可作为solr的运行实例工程。

licenses:solr相关的一些许可信息1.4运行环境solr 需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr 默认提供Jetty(java写的Servlet容器),本教程使用Tocmat作为Servlet容器,环境如下:Solr:Solr4.10.3Jdk:jdk1.7.0_72Tomcat:apache-tomcat-7.0.532Solr安装配置2.1S olr与Tomcat整合2.1.1【SolrCore配置】2.1.1.1SolrHome与SolrCore创建一个Solr home目录,SolrHome是Solr运行的主目录,目录中包括了运行Solr 实例所有的配置文件和数据文件。

Solr实例即SolrCore,一个SolrHome中可以包括多个SolrCore目录,每个SolrCore对外提供单独的搜索和索引服务。

2.1.1.2目录结构example\solr是一个solr home目录结构,如下:collection1:叫做一个Solr运行实例SolrCore也称为一个collection,SolrCore 的名称不固定,命名方式类似collection1/collection2/collection3等,每个collection对外单独提供索引和搜索接口。

solrHome中可以创建多个solrCore即collection。

SolrCore目录内容如下所示:说明:(1)一个solrCore中包括一个索引目录,该目录存储了该 SolrCore的索引文件。

data 是SolrCore的索引文件目录,如果没有solr会自动创建。

(2)conf是SolrCore的配置文件目录:里面包括两个重要的配置文件solrconfig.xml 与schema.xml配置文件2.1.1.3创建SolrCore创建目录F:\develop\solr将example\solr目录拷贝至 F:\develop\solr目录下并改名为solrHome。

将contrib和dist两个目录拷贝到F:\develop\solr下。

SolrHome下:2.1.1.4SolrCore配置每个SolrCore的conf目录下有solrconfig.xml文件,它是SolrCore运行的配置文件。

2.1.1.4.1加载jar包在solrconfig.xml中可以加载一些扩展的jar,solr.install.dir表示solrCore 的目录位置,需要根据扩展Jar的实际存放位置坐对应的修改:2.1.1.4.2dataDir索引目录每个SolrCore都有自己的索引文件目录,默认在SolrCore目录下的data中。

data数据目录下包括了index索引目录和tlog日志文件目录。

如果不想使用默认的目录也可以通过solrConfig.xml更改索引目录,如下:2.1.1.4.3请求处理器requestHandler请求处理器,定义了索引和搜索的访问方式。

通过/update维护索引,可以完成索引的添加、修改、删除操作。

提交xml、json数据完成索引维护,索引维护小节详细介绍。

通过/select搜索索引。

设置搜索参数完成搜索,搜索参数也可以设置一些默认值,如下:<requestHandler name="/select" class="solr.SearchHandler"><!-- 设置默认的参数值,可以在请求地址中修改这些参数--><lst name="defaults"><str name="echoParams">explicit</str><int name="rows">10</int><!--显示数量--><str name="wt">json</str><!--显示格式--><str name="df">text</str><!--默认搜索字段--></lst></requestHandler>2.1.2【Solr工程部署】1.将dist\solr-4.10.3.war拷贝到Tomcat的webapp目录下改名为solr.war2.启动tomcat后,solr.war自动解压,将原来的solr.war删除。

3.拷贝example\lib\ext 目录下所有jar包拷贝到Tomcat的webapp\solr\WEB-INF\lib目录下4.修改Tomcat目录下webapp\solr\WEB-INF\web.xml文件,如下所示:设置Solrhome5.拷贝log4j.properties文件在 Tomcat下webapps\solr\WEB-INF目录中创建文件 classes文件夹,复制Solr目录下example\resources\log4j.properties至Tomcat下webapps\solr\WEB-INF\classes目录2.1.3启动Tomcat访问http://localhost:8080/solr2.2【管理界面】2.2.1Dashboard:仪表盘,显示了该Solr实例开始启动运行的时间、版本、系统资源、jvm等信息。

2.2.2Logging:Solr运行日志信息2.2.3Cloud:Cloud即SolrCloud,即Solr云(集群),当使用Solr Cloud模式运行时会显示此菜单,如下图是Solr Cloud的管理界面:2.2.4Core Admin:Solr Core的管理界面。

Solr Core 是Solr的一个独立运行实例单位,它可以对外提供索引和搜索服务,一个Solr工程可以运行多个SolrCore(Solr实例),一个Core对应一个索引目录。

2.2.5java propertiesSolr在JVM 运行环境中的属性信息,包括类路径、文件编码、jvm内存设置等信息。

2.2.6Tread Dump显示Solr Server中当前活跃线程信息,同时也可以跟踪线程运行栈信息。

2.2.7Core selector选择一个SolrCore进行详细操作,如下:2.2.8Analysis(重点)通过此界面可以测试索引分析器和搜索分析器的执行情况。

2.2.9dataimport可以定义数据导入处理器,从关系数据库将数据导入到Solr索引库中。

2.2.10Document(重点)通过此菜单可以创建索引、更新索引、删除索引等操作,界面如下:/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。

2.2.11query(重点)通过/select执行搜索索引,必须指定“q”查询条件方可搜索。

2.3【多SolrCore配置】配置多SolrCore的好处:1.一个solr工程对外通过SorlCore 提供服务,每个SolrCore相当于一个数据库,这个功能就相当于一个mysql可以运行多个数据库。

相关文档
最新文档