solr配置
Tomcat、TongWeb5.0、TongWeb6.0部署solr
Tomcat、TongWeb5.0、TongWeb6.0部署solr将solr,solr-4.7.2复制到某⼀路径下,⽐如F盘根⽬录。
1、tomcat中进⾏配置,配置如下:<Context docBase="F:/solr" reloadable="true" ><Environment name="solr/home" type="ng.String" value="F:/solr-4.7.2/example/solr" override="true" /></Context>将tomcat启动,启动solr服务器,就可以进⾏索引创建及查询了。
2、东⽅通TongWeb5.0中进⾏配置。
配置如下:a、东⽅通安装⽬录下 **\TongWeb5.0\config\twns.xml 的<deployments></deployments>标签中间添加<web-app context-root="solr" name="solr" source-path="F:\solr" />b、solr主⽬录配置: F:\solr\WEB-INF\web.xml 中加⼊<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>F:\solr-4.7.2\example\solr</env-entry-value><env-entry-type>ng.String</env-entry-type></env-entry>3、东⽅通TongWeb6.0中进⾏配置,配置如下:a、把solr1\solr-4.7.2\dist\solr-4.7.2.war包复制到TongWeb6.0\autodeploy⽬录下b、在TongWeb6.0\bin\tongweb.xml⽂件⾥添加:<web-app name="solr-4.7.2" original-location="D:\TongWeb6.0\autodeploy\solr-4.7.2.war"location="${tongweb.app}\solr-4.7.2" context-root="/solr-4.7.2" vs-names="server" is-directory="false" enabled="true" description="autodeploy---solr-4.7.2.war" deploy-order="100" object-type="user" jsp- compile="false" dtd-validate="false" is-autodeploy="true" version="" retire-state="none" retire-strategy="nature" retire-timeout="0" version-serial-number="1"/>指定war位置和系统访问路径。
Solr搜索技术应用实战
Solr搜索技术应用实战Solr是一个开源的搜索平台,它基于Apache Lucene构建,提供丰富的API和可扩展性,已经成为了许多开发者选择的搜索引擎。
随着数据量的增加和业务场景的多样化,Solr的应用越来越广泛。
本文将从Solr的实战应用入手,为开发者提供一些技巧和经验。
一、Solr集群搭建Solr的性能和可靠性与硬件配置和部署状态密切相关。
在生产环境中建议使用集群部署,可以分布式处理查询请求,增加搜索并发能力和容错性。
Solr集群中每个节点可以作为独立的搜索服务器,提供相同的搜索服务。
一个完整的Solr集群由多个节点组成,分为SolrCloud和非SolrCloud两种模式,SolrCloud是集群管理的一种模式,在SolrCloud模式下,Solr 集群可以更方便地进行扩容和管理。
以下是SolrCloud集群的简要步骤:1. 准备ZooKeeper,SolrCloud使用ZooKeeper进行集群管理。
2. 启动Solr节点,并与ZooKeeper进行连接。
3. 使用Solr控制台创建集合,集合分片在所有节点之间平均分配。
4. 访问SolrCloud集群的URL,进行搜索等操作。
二、Solr数据导入Solr并不能直接从数据库或文件中获取数据,需要使用数据导入扩展来实现数据导入。
Solr数据导入流程大致如下:1. 配置数据源和数据目标,Solr支持多种数据源,包括数据库、文件、RSS等。
2. 配置数据导入的转换器和分词器,将数据源的数据转化为Solr需要的格式。
3. 配置数据导入的定时策略,Solr可以定时从数据源获取数据并导入。
以下是一个Solr数据导入的示例配置文件:```<dataConfig><dataSource name=\"jdbcDataSource\" type=\"JdbcDataSource\" driver=\"com.mysql.jdbc.Driver\"url=\"jdbc:mysql:\/\/localhost:3306\/test\" user=\"root\" password=\"123456\"\/><document><entity name=\"book\" query=\"SELECT * FROM book\"><field column=\"id\" name=\"id\"\/><field column=\"title\" name=\"title\"\/><field column=\"author\" name=\"author\"\/><field column=\"description\" name=\"description\"\/><\/entity><\/document><\/dataConfig>```以上配置会将MySQL数据库中的book表的所有数据导入Solr,并映射到Solr的id、title、author和description字段中。
solr配置
9. 将example/lib/ext/下的所有jar包复制到tomcat/webapps/solr/WEB-INF的lib目录中,一共5个,是solr的独立日志处理模块;可以修改core名称,不过修改时需要将对应文件夹下面的core.properties里面的name名称一并换掉
10. 在tomcat/webapps/solr/WEB-INF/下新建一个classes目录,将example/resources下的log4j.properties文件复制到该classes目录中,否则日志模块无法正常工作;
solr 配置
1. 下载solr压缩包(下面均已solr-4.7.0解说)
ห้องสมุดไป่ตู้
2. 解压solr-4.7.0.tgz
3. 新建一个Solr文件夹(名称与位置随意),我建在了D盘下
4. 然后在Solr下面创建solr1文件夹(做集群使用,后续会讲到),
5. 最后在solr1下创建两个文件夹,分别为tomcat(存放tomcat,自己放入,下面我就不提到了,假设端口为8080)和home(存放core和索引信息)
<env-entry-value>D:\Solr\solr1\home</env-entry-value>
<env-entry-type>ng.String</env-entry-type>
</env-entry>
12. 重启tomcat
13. 浏览器输入:http://localhost:8080/solr就能看到solr的管理界面了
6. 将example/webapps目录下的solr.war复制到tomcat的webapps目录中
solr配置安装
Solr介绍:Solr:apache的顶级开源项目(由java开发,基于lucene)Lucene:全文检索引擎(发动机),不能独立运行,对外提供服务。
Solr:全文检索服务器(汽车),可以单独运行在servelt容器中,可以单独对外提供索引和搜索功能。
Solr的优点:查询语句多样,可扩展,可配置。
且对Lucene性能进行优化。
共有的缺点:都没有视图渲染功能(只提供操作方法)。
Solr实现全文检索的步骤:索引流程:solr客户端(浏览器、java程序)向solr服务端发送POST请求,内容包括FIeld信息的一个xml文档,通过该文档,solr 实现对索引的维护(CUD)。
搜索流程:solr客户端(浏览器、java程序)向solr服务端发送GET请求,solr服务器返回一个xml文档。
Solr的安装过程:第一步:安装tomcat第二步:解压solr压缩文件第三步:配置环境:Jdk:1.7以上Solr:4.10.3Web服务器:tomcat以下开始solr的安装部署:第一步:将solr.war复制到tomcat的webapps的目录下:第二步:解压缩war包1.直接解压或者Tomcat/bin/startup.bat启动文件,启动tomcat时war包就自动解压。
2.删除war包第三步:添加solr的扩展服务包将以下目录的jar包进行复制:复制到以下目录:第四步:添加log4j配置文件复制以下目录的以下内容:复制到:第五步:在web.xml文件中指定solrhome目录Solrcore的安装配置Solrhome和solrcore的关系:Solrhome是solr服务运行是主目录。
一个solrhome包含了多个solrcore目录,一个solrcore目录中包含了一个solr实例。
先装solrhome,再装solrcore 第六步:安装solrhome将以下目录复制:复制到以下目录:第七步:配置solrcore在solrcore的conf目录下,有一个solrconfig.xml文件,通过配置该文件来进行配置solr实例的运行信息。
solr完整快速搭建版(学习笔记)
Solr学习笔记由于公司一个网站需要实现搜索功能的更新换代,在和编辑和领导沟通了一段时间之后,我们决定不再使用之前的通过JDBC发送sql语句进行搜索的方法。
一番比较,我们决定选用Lucene来搭建我们全文搜索的框架。
后来由于开发时间有限,Solr对lucene的集成非常好,我们决定使用Struts+Spring+Solr+IKAnalyzer的一个开发模式来快速搭建一个企业级搜索平台。
自己之前没有接触过这方面的东西,从不断看网上的帮助文档,逛论坛,逛wiki,终于一点一点的开发出一个有自己风格并又适合公司搜索要求的这么一个全文搜索功能。
网上对于lucene,solr的资料并不是那么多,而且大多是拷贝再拷贝,开发起来难度是有的,项目缺陷也是有的,但是毕竟自己积累了这么一个搭建小型搜索引擎的经验,很有收获,所以准备写个笔记记录下来,方便自己以后回忆,而且可以帮助一下其他学者快速搭建一个企业级搜索。
主要思想:此企业级搜索分2块,一块是Solr项目:仅关于Solr一系列配置,索引,建立/更新索引配置。
另一块是网站项目:Action中通过httpclient通信,类似webService一个交互实现,访问配置完善并运行中的Solr,发送查询请求,得到返回的结果hits(solrJ查询,下面详解),传递给jsp页面。
1.下载包Lucene3.5Solr3.5IKAnalyzer3.2.8中文分词器(本文也仅在此分词器配置的基础上)开发时段:2011.12中旬至1月中旬(请自己下载…)都是最新版,个人偏好新东西,稳定不稳定暂不做评论。
2.搭建Solr项目:1.apache-solr-3.5.0\dist下得apache-solr-3.5.0.war复制到tomcat下webapps目录,并更改名字为solr.war,运行生成目录.2.将IKAnalyzer的jar包导入刚生成的项目中lib目录下。
3.Solr项目配置中文分词:在solr/conf/schema.xml中<types>节点下添加个<fieldType>类型(可直接拷贝下段代码)<!--hu add IKAnalyzer configuration--><fieldType name="textik" class="solr.TextField" ><analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/><analyzer type="index"><tokenizer class="org.wltea.analyzer.solr.IKT okenizerFactory"isMaxWordLength="false"/><filter class="solr.StopFilterFactory"ignoreCase="true" words="stopwords.txt"/><filter class="solr.WordDelimiterFilterFactory"generateWordParts="1"generateNumberParts="1"catenateWords="1"catenateNumbers="1"catenateAll="0"splitOnCaseChange="1"/><filter class="solr.LowerCaseFilterFactory"/><filter class="solr.EnglishPorterFilterFactory"protected="protwords.txt"/><filter class="solr.RemoveDuplicatesT okenFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="org.wltea.analyzer.solr.IKT okenizerFactory" isMaxWordLength="false"/><filter class="solr.StopFilterFactory"ignoreCase="true" words="stopwords.txt"/><filter class="solr.WordDelimiterFilterFactory"generateWordParts="1"generateNumberParts="1"catenateWords="1"catenateNumbers="1"catenateAll="0"splitOnCaseChange="1"/><filter class="solr.LowerCaseFilterFactory"/><filter class="solr.EnglishPorterFilterFactory"protected="protwords.txt"/><filter class="solr.RemoveDuplicatesT okenFilterFactory"/></analyzer></fieldType>此配置不过多解释:<analyzer type="query">此处配置type并分成index和query 代表着在索引和查询时候的分词实现,isMaxWordLength表示是以何种分词实现,true,false各代表一种,具体请看IKAnalyzer说明文档。
Solr开发指南
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使用教程目录一、软件版本 (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配置进去。
solrconfig.xml配置详解
solrconfig.xml配置详解solrconfig.xml包含了solr中大部分的配置信息。
Solrconfig.xml, schema.xml 和所有的配置文件都在solr的conf目录下,都是可以编辑的,除了admin UI。
编辑admin ui请参加【编辑solr的admin ui配置文件.doc】。
Solrconfig.xml中的简单注释可以源代码中找到。
lib<lib>指令可以在你的solrconfig.xml中指定。
dataDir parameter除了默认目录外,指定索引存放位置,默认索引数据放在slor home下,如果使用replication ,这应该可以匹配replication 配置,如果此目录并不是绝对的,那么它是相对于你的目录中,是从您启动Solr的位置开始寻找。
说明:solr4.0以后,改变<dataDir>的值后,通过reload重新载入。
codecFactory编解码器的工厂允许你使用自定义编解码器架构。
例如:如果你想定义每indexConfig 组件这些设置控制低层次的行为的索引。
详细信息请参阅示例中的solrconf.xml注释。
说明:在solr4.0以后,这个组件也是活的装置,通过reload可动态加载。
注意:在3.6版本之前,有两个不同的部分叫< indexdefaults >和<mainindex >,而现在这一段代替 <indexconfig >。
你仍然可以使用旧的配置为在3.6和4。
x,但需要迁移时,撞lucenematchversion。
迁移的最简单的办法是先例<indexconfig >部分都有注释,使用缺省值,然后自定义如果必要的话。
Update Handler 组件“update”相关的事件监听在更新处理部分,您可以定义特定的“更新”相关的事件的听众:“postcommit”和“postoptimize”。
solr5.2 solrCloud配置说明
solrCloud5.2配置说明1,到solr官网下载solr5.2.0,解压到D盘2,复制server目录到server1和server2两个目录3,server1/solr和server2/solr目录结构如下:server1\--gettingstarted\--conf\(从configsets\basic_configs\conf目录复制)--gettingstarted_shard1_replica1\--core.properties--gettingstarted_shard2_replica1\--core.properties--solr.xml--zoo.cfgserver2\--gettingstarted\--conf\(从configsets\basic_configs\conf目录复制)--gettingstarted_shard1_replica2\--core.properties--gettingstarted_shard2_replica2\--core.properties--solr.xml--zoo.cfg各个目录下core.properties内容如下Server目录core.propertiesserver1gettingstarted_shard1_replica1numShards=2name=gettingstarted_shard1_replica1shard=shard1collection=gettingstartedcoreNodeName=core_node1server1gettingstarted_shard2_replica1numShards=2name=gettingstarted_shard2_replica1shard=shard2collection=gettingstartedcoreNodeName=core_node2server2gettingstarted_shard1_replica2numShards=2name=gettingstarted_shard1_replica2shard=shard1collection=gettingstartedcoreNodeName=core_node3server2gettingstarted_shard2_replica2numShards=2name=gettingstarted_shard2_replica2shard=shard2collection=gettingstartedcoreNodeName=core_node44,server1和server2目录下新建start.cmd文件java-Dsolr.solr.home=./solr/gettingstarted-Dcollection.configName=gettingstarted-Dbootstrap_confdir=./solr/gettingstarted/conf-DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183-jar start.jar5,Server1#Module:server--module=server#minimum number of threadsthreads.min=10#maximum number of threadsthreads.max=200#thread idle timeout in millisecondsthreads.timeout=60000#buffer size for outputjetty.output.buffer.size=32768#request header buffer sizejetty.request.header.size=8192#response header buffer sizejetty.response.header.size=8192#should jetty send the server version header?jetty.send.server.version=true#should jetty send the date header?jetty.send.date.header=false#What host to listen on(leave commented to listen on all interfaces)#jetty.host=#Dump the state of the Jetty server,components,and webapps after startupjetty.dump.start=false#Dump the state of the Jetty server,before stopjetty.dump.stop=false#Enable delayed dispatch optimisationjetty.delayDispatchUntilContent=falsejsp-impl=apache#Module:http--module=http##HTTP port to listen onjetty.port=8981##HTTP idle timeout in millisecondshttp.timeout=30000Server2##端口修改为8982,其他都相同jetty.port=89825,启动zookeeper集群,执行server1/start.cmd和server2/start.cmd分别启动两个server。
银河麒麟服务器操作系统 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查询参数说明备忘]
常用
--------------------------------------------
roam~0.8,检索返回相似度在0.8以上的记录。
5. 邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10
6. “^” 控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,
那么在其后加上”^”符号和增量值,即jakarta^4 apache
•fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,
例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。
官方文档:/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6002
13. {} 不包含范围检索,如检索某时间段记录,不包含头尾
date:{200707 TO 200710}
14. \ 转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? : \
solr 查询参数说明
发表于:2009年3月25日 | 分类:Solr | 标签: query, solr | views(5,140)
solr 3.5 配置及应用
solr 3.5 配置及应用(一)人个博客:/yuanermen一、solr 的简介Apache Solr 是一个开源的搜索服务器。
Solr 使用Java 语言开发,主要基于HTTP 和Apache Lucene 实现。
Apache Solr 中存储的资源是以Document 为对象进行存储的。
每个文档由一系列的Field 构成,每个Field 表示资源的一个属性。
Solr 中的每个Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是id,在Schema 配置文件中使用:<uniqueKey>id</uniqueKey>进行描述。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。
文档通过Http利用XML加到一个搜索集合中。
查询该集合也是通过http收到一个XML/JSON响应来实现。
它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
二、solr 3.5 的下载solr 3.5下载地址:/dist//lucene/solr/tomcat tomcat-7.0.26 下载:/apache/tomcat/tomcat-7/v7.0.26/bin/apache-tomcat-7.0.26.zip三、solr 3.5的安装1、解压tomcat-7.0.26 到e:\tomcat-7.0.26\下2、打开tomcat-7.0.26\conf 修改server.xml 文件<Connector port="8080"protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443"URIEncoding="UTF-8"/>复制代码修改默认端口8080,可以不修改,添加字符编码URIEncoding="UTF-8" 否则中文会乱码3、在apache-solr-3.5.0\dist目录下找到apache-solr-3.5.0.war把重命名为solr.war 并上传到tomcat-7.0.26/webapps下。
SolrDataimport配置
SolrDataimport配置参考资料:Solr 通过Dataimport可以对各种⽂件类型(包括邮件)建索引,也可以对关系型数据库建索引。
前提依赖Jar包Dataimport从关系型数据库建索引时,依赖以下jar包,这些Jar包位于Solr安装包下⾯的solr-6.1.0\dist\⽬录下⽬录下:本实例是SQL Server关系型数据库,所以还要添加sqljdbc42.jar到指定路径下。
Dataimport为普通⽂件建索引时,依赖以下jar包,这些jar包位于Solr安装包的solr-6.1.0\contrib\extraction\lib⽬录下这些jar包在本机上的统⼀存放位置为:/var/lib/solr/lib/在solrconfig.xml⽂件中添加以上jar包的引⽤。
<lib dir="/var/lib/solr/lib/" regex=".*\.jar" />⼀、配置solrconfig.xml<requestHandler name="/dataimport"class="solr.DataImportHandler"><lst name="defaults"><str name="config">tika-data-config.xml</str><str name="update.chain">uuid</str></lst></requestHandler>⼆、配置tika-data-config.xml在⽂件solrconfig.xml同级⽬录下,新建⽂件tika-data-config.xml,tika-data-config.xml⽂件中的内容配置如下:<dataConfig><!--可以配置多个dataSource,每个都有唯⼀⼀个name--><dataSource name="sqldb2" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://10.2.8.170:1433" user="xxx" password="xxxxxxx"/> <dataSource type="BinFileDataSource" name="f1"/><dataSource type="FileReaderDataSource" name="f2"/><document><!--可以配置多个Entity,每个Entity通过name属性来区分--><!--Entity数据源为⽂件--><entity name="files" dataSource="f1" rootEntity="false"processor="FileListEntityProcessor"baseDir="/usr/local/solr/files/"fileName=".*.(doc)|(pdf)|(xls)|(ppt)|(docx)|(txt)|(pptx)|(xlsx)|(xml)|(csv)|(json)|(html)|(sh)|(css)|(png)"recursive="true"><field column="fileAbsolutePath" name="url" /><field column="fileSize" name="size" /><field column="fileLastModified" name="lastModified" /><field column="file" name="fname"/><entityname="documentImport"processor="TikaEntityProcessor"url="${files.fileAbsolutePath}"format="text"><field column="Author" name="author" meta="true"/><field column="title" name="title" meta="true"/><field column="subject" name="subject" meta="true"/><field column="Content-Type" name="content_type" meta="true"/><field column="text" name="content"/></entity></entity><!--Entity数据源为SQL Server数据库--><entity name="DimOrganization" dataSource="sqldb2"query="SELECT [物料类型名称] as 名称 FROM [GreeBGDW].[dbo].[Dim_MaterielType]"><field column="名称" name="name"/></entity><!--Entity数据源为SQL Server数据库--><entity name="180119" dataSource="sqldb2"query="SELECT [name] as name , [name] as cat ,name as manu FROM [GreeBGDW].[dbo].[180119]"><field column="name" name="name"/><field column="cat" name="cat"/><field column="manu" name="manu"/></entity></document></dataConfig>⽂件实体属于简介⼀个简单的实体处理程序,可以⽤于枚举标准⽂件系统中的⽂件列表,它不需要使⽤DataSource.属性如下:fileName:(必填) ⽤正则表达式来标记⽂件名baseDir:(必填) 基础⽬录,绝对路径.recursive:是否递归⽂件列表,默认为false.excludes:不包括的⽂件名的正则表达式newerThan:⽇期参数,格式: (yyyy-MM-dd HH:mm:ss),它也可以是⼀个数学⽇期,如('NOW-3DAYS'),其中的单引号是必填的.也可以是⼀个有效的变量格式,如(${}).olderThan :⽇期格式,规则同上.biggerThan:整型参数.smallerThan:整型参数.rootEntity:它⼀般情况下都是false(除⾮你只索引⽂件名).直属于<document>下的实体才是根实体.那就意味着,根实体发出的每⼀⾏都会被solr/lucene创建.但是在这种情况下,我们不希望⼀个⽂件对应⼀个⽂档(document).我们希望⽣成⼀个⽂档(document),每⼀⾏的发出都是由下⾯的实体'x'来完成的.因为实体'f'包含了rootEntity=false,直属实体f下的实体就变成了⼀个根实体.dataSource:数据源错误记录【错误⼀】 org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for/configs/collection2/dataimport.properties【解决⽅法】在配置⽂件conf/⽬录下添加⼀个空的dataimport.propertie⽂件。
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. 性能问题:通过调整配置参数、优化查询语句等,解决性能问题。
solr日志配置
solr⽇志配置配置Solr⽇志记录临时记录设置您可以使⽤Admin Web界⾯来控制Solr中的⽇志输出量。
选择LOGGING链接。
请注意,此页⾯只允许您更改正在运⾏的系统中的设置,并不会保存在下⼀次运⾏中。
![] (https:///blog/1177207/201808/1177207-20180828140126457-378371453.png)永久记录设置Solr 使⽤ Log4J 版本1.2 进⾏⽇志记录,它是使⽤server/resources/log4j.properties进⾏配置。
默认情况下,Solr⽇志消息将被写⼊SOLR_LOGS_DIR/solr.log。
``` /opt/solr-7.2.1/server/resources ``` ``` /opt/solr-7.2.1/server/logs ```solr⽇志配置⽰例每天⽣成⼀个⽇志⽂件 ERROR单独⽣成⼀个⽇志⽂件 ``` # Default Solr log4j config # rootLogger log level may be programmatically overridden by -Dsolr.log.levelsolr.log=${solr.log.dir} log4j.rootLogger=INFO, fileError, fileInfo, CONSOLEConsole appender will be programmatically disabled when Solr is started with option -Dsolr.log.muteconsolelog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.EnhancedPatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n- size rotation with log cleanup.log4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.MaxFileSize=4MBlog4j.appender.file.MaxBackupIndex=9- File to log to and log formatlog4j.appender.fileError=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.fileError.DatePattern='_'yyyy-MM-ddlog4j.appender.fileError.File=${solr.log}/solrError.loglog4j.appender.fileError.Append=truelog4j.appender.fileError.Threshold=ERRORlog4j.appender.fileError.MaxBackupIndex=10yout=org.apache.log4j.EnhancedPatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n使⽤⽇志输出过滤log4j.appender.fileError.filter.F1=org.apache.log4j.varia.LevelRangeFilterlog4j.appender.fileError.filter.F1.LevelMin=ERRORlog4j.appender.fileError.filter.F1.LevelMax=ERRORlog4j.appender.fileInfo=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.fileInfo.DatePattern='_'yyyy-MM-ddlog4j.appender.fileInfo.File=${solr.log}/solrInfo.loglog4j.appender.fileError.Append=truelog4j.appender.fileInfo.Threshold=INFOlog4j.appender.fileError.MaxBackupIndex=10yout=org.apache.log4j.EnhancedPatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n使⽤⽇志输出过滤log4j.appender.fileInfo.F1=org.apache.log4j.varia.LevelRangeFilterlog4j.appender.fileInfo.F1.LevelMin=INFOlog4j.appender.fileInfo.F1.LevelMax=INFOAdjust logging levels that should differ from root logger.apache.zookeeper=WARN.apache.hadoop=WARN.eclipse.jetty=WARN.eclipse.jetty.server.Server=INFO.eclipse.jetty.server.ServerConnector=INFOset to INFO to enable infostream log messages.apache.solr.update.LoggingInfoStream=OFF</br><h3>记录慢速查询</h3>对于⼤容量的搜索应⽤程序,记录每个查询可能会⽣成⼤量⽇志,并且根据卷的⼤⼩,可能会影响性能。
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 分词规则是指在 Solr 搜索引擎中用于将文本分割成单独的词语的规则。
分词是Solr 在执行搜索操作时的重要步骤,它将输入的文本进行分词后,建立索引,并根据用户的搜索查询进行匹配。
Solr 默认采用区分大小写的分词规则,即将词语按照空格、标点符号等进行分隔。
但对于许多搜索应用来说,这种简单的分词方式可能不够准确。
因此,Solr 提供了多种自定义分词规则以满足不同需求。
1. 字符过滤器:Solr 中的字符过滤器用于对文本进行预处理,例如去除 HTML 标签、转换成小写或忽略特定字符等。
这些过滤器可以通过 Solr 配置文件进行配置。
2. 分词器:分词器是 Solr 中最核心的组件之一,它将文本分割成独立的词语。
Solr 提供了多种分词器,如标准分词器、较少使用的简单分词器、正则表达式分词器等。
你可以根据需求选择适合的分词器。
3. 过滤器:过滤器用于进一步处理分词结果,如去除停用词、同义词替换、词干化等。
Solr 提供了多种过滤器,如停用词过滤器、同义词过滤器、词干过滤器等。
你可以根据需要配置相应的过滤器。
4. Token:在 Solr 中,分词后得到的独立词语称为 Token。
在搜索中,Solr 将根据查询语句与 Token 进行匹配,并返回相应的搜索结果。
5. 分词规则优化:除了默认提供的分词规则和组件外,Solr 还允许用户根据特定需求进行自定义分词。
这可以通过编写自定义分词器、字符过滤器和其他自定义组件来实现。
总之,Solr 分词规则是用于将文本分割成单独的词语的规则。
通过合理配置字符过滤器、分词器和过滤器等组件,我们可以更好地适应具体搜索应用的需求,并提高搜索的准确性和效率。
solr全文检索_初级教程
Apache Solr 初学者——初级教程(介绍、安装部署、Java接口、中文分词)Apache Solr 介绍Solr 是什么?Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。
服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。
Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。
而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。
Lucene 是什么?Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。
Lucene 目前是 Apache Jakarta 家族中的一个开源项目。
也是目前最为流行的基于 Java 开源全文检索工具包。
目前已经有很多应用程序的搜索功能是基于 Lucene ,比如 Eclipse 帮助系统的搜索功能。
Lucene 能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。
Solr VS LuceneSolr 与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene ,因为Solr 底层的核心技术是使用Apache Lucene 来实现的,简单的说Solr 是Lucene 的服务器化。
需要注意的是Solr 并不是简单的对Lucene 进行封装,它所提供的大部分功能都区别于Lucene 。
安装搭建Solr安装Java 虚拟机Solr 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成。
可以通过下面的地址下载所需JDK 或JRE :∙OpenJDK (/j2se/downloads.html)∙Sun (/j2se/downloads.html)∙IBM (/developerworks/java/jdk/)∙Oracle (/technology/products/jrockit/index.html)安装步骤请参考相应的帮助文档。
solr add copy field
solr add copy field在Solr中,添加CopyField(拷贝字段)是一种常用的配置方式,用于将索引文档中的多个字段映射到一个目标字段。
这样做的好处是,在后续的查询中,可以通过查询该目标字段来实现对多个字段的检索功能。
CopyField的语法通常如下:xml复制代码<copyField source="源字段" dest="目标字段"/>其中,source属性指定要复制的源字段,而dest属性指定要将这些字段值复制到的目标字段。
举个例子,假设我们有一个名为msg_title的字段和一个名为msg_content的字段,我们想要将这两个字段的内容都复制到一个新的字段msg_all中。
那么,我们可以在Solr的schema.xml配置文件中添加如下配置:xml复制代码<copyField source="msg_title"dest="msg_all"/><copyField source="msg_content"dest="msg_all"/>这样,在添加索引文档时,Solr会自动将msg_title和msg_content字段的内容复制到msg_all字段中。
后续在进行查询时,我们就可以通过查询msg_all字段来实现对msg_title和msg_content字段的联合检索。
需要注意的是,如果目标字段由多个源字段构成,可能需要将其指定为multiValued,以支持存储多个值。
此外,使用CopyField 时不能区分各个源字段的重要度差别。
如果需要对不同字段设置不同的权重或重要度,可以考虑使用其他查询方式或字段配置来实现。
solr分布式
solr 简单的分布式布署SOLR复制模式,是一种在分布式环境下用于同步主从服务器的一种实现方式,因之前提到的基于rsync的SOLR不同方式部署成本过高,被SOLR1.4版本所替换,取而代之的就是基于HTTP协议的索引文件传输机制,该方式部署简单,只需配置一个文件即可。
1)首先在${tomcat目录}/conf/Catalina/localhost 创建两个solr的配置文件。
可以命名为solr.xml(主服务器配置)内容为:<Context docBase="F:/apache-solr-1.4.0/dist/apache-solr-1.4.0.war" reloadable="true" ><Environment name="solr/home" type="ng.String"value="F:/apache-solr-1.4.0/example/solr" override="true" /></Context>slaver_solr.xml (从服务器配置)内容为:<Context docBase="F:/apache-solr-1.4.0/dist/apache-solr-1.4.0.war" reloadable="true" ><Environment name="solr/home" type="ng.String"value="F:/solr分布式/solr" override="true" /></Context>可以看到两个配置所引用的后台管理是同一个目录的,但这个没关系,只要solr/home的不一样就行了,接着看主从服务器上solr/home的配置有什么不一样。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
配置Solr
/blog/1396592
找到3.4.0下载apache-solr-3.4.0.zip或者apache-solr-3.4.0.tgz都可以,下载完成后,我们解压缩,解压完毕后,我们去解压一个tomcat,我用的是tomcat6,解压完tomcat6后,我们打开tomcat 的文件夹,
简单起见,我们以Solr Example中的配置为基础
然后我们在tomcat下的conf目录下
创建Catalina\localhost目录(如果存在就不用创建)
然后我们创建solr.xml文件
在里面加入如下语句:
配置代码
<Context docBase="D:/file/apache-solr-3.4.0/dist/apache-solr-3.4.0.war"
reloadable="true" debug="0" privileged="true" allowLinking="true"
crossContext="true">
<Environment name="solr/home" type="ng.String"
value="D:/file/apache-solr-3.4.0/example/solr" override="true" /> <!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1,localhost,/blog/1396592192.168.0.
127"/>
-->
</Context>
docBase中是我们的solr的web服务的地址,我们解压solr后,到dist中找到
apache-solr-3.4.0.war给引入进来,然后solr/home就是solr的配置和索引地址,测试的话可以引入example/solr,或者把example下的solr 复制到任何位置都可以,只要把
solr/home的地址给加正确了就可以。
如果需要控制访问权限则可以配置(上面配置注释的地方):
配置代码
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1,localhost,192.168.0.127"/>
如果不是来自配置的IP则被拦截会显示403
我们全部配置好了,现在还不行,如果要与nutch进行索引的话,还需要把nutch中的solr配置给copy过来,我们在nutch1.4的conf目录下找到schema.xml文件,然后我们将这个文件copy到solr/home的apache-solr-3.4.0/example/solr/conf目录下,覆盖掉已经存在的即可
我们希望允许Solr为搜索结果创建摘要,因此我们需要存储内容以便能够索引它。
b、调整schema.xml,以便"content"字段的"stored"属性等于true。
<field name="content" type="text" stored="true" indexed="true"/>
另外,我们希望能够容易的调整查询的关联度,因此这里创建一个新的请求处理器(request handler)交dismax
c、打开apache-solr-1.3.0/example/solr/conf/solrconfig.xml文件,把下面这段粘贴进去
<requestHandler name="/nutch" class="solr.SearchHandler" >
<lst name="defaults">
<str name="defType">dismax</str>
<str name="echoParams">explicit</str>
<float name="tie">0.01</float>
<str name="qf">
content^0.5 anchor^1.0 title^1.2
</str>
<str name="pf">
content^0.5 anchor^1.5 title^1.2 site^1.5
</str>
<str name="fl">
url
</str>
<str name="mm">
2<-1 5<-2 6<90%
</str>
<int name="ps">100</int>
<bool hl="true"/>
<str name="q.alt">*:*</str>
<str name="hl.fl">title url content</str>
<str name="f.title.hl.fragsize">0</str>
<str name="f.title.hl.alternateField">title</str>
<str name="f.url.hl.fragsize">0</str>
<str name="f.url.hl.alternateField">url</str>
<str name="f.content.hl.fragmenter">regex</str>
</lst>
</requestHandler>
启动Solr
配置好了后,然后启动tomcat即可,然后nutch爬取完毕后就会生成索引到solr/home下的data下面:
D:/file/apache-solr-3.4.0/example/solr/data/index下(我的solr/home)
注意:配置好了以后,启动tomcat,访问http://localhost:8080/solr/admin/,执行查询的时候,查询中文出现乱码,并且没有结果,则在tomcat安装目录D:\Apache Software Foundation\Tomcat 6.0\conf(这是我的)修改server.xml内容,添加一个编码
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>。