配色: 字号:
solr单机安装使用介绍 V7.4.0
2022-09-15 | 阅:  转:  |  分享 
  
Solr介绍什么是solrSolr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr可以
独立运行在Jetty、Tomcat等这些Servlet容器中。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可
扩展,并对索引、搜索性能进行了优化。使用Solr进行创建索引和搜索索引的实现方法很简单,如下:创建索引:客户端(可以是浏览器可
以是Java程序)用POST方法向Solr服务器发送一个描述Field及其内容的XML文档,Solr服务器根据xm
l文档添加、删除、更新索引。搜索索引:客户端(可以是浏览器可以是Java程序)用GET方法向Solr服务器发送请求,然后对
Solr服务器返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建页面UI的功能,但是Solr提供了一
个管理界面,通过管理界面可以查询Solr的配置和运行情况。Solr和Lucene的区别Lucene是一个开放源代码的全文检索引擎工
具包,它不是一个完整的全文检索应用。Lucene仅提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以
方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索应用。Solr的目标是打造一款企业级的搜索引擎系统,它
是基于Lucene一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜
索功能。Solr安装配置下载solrSolr和lucene的版本是同步更新的,最新的版本是7.4.0本课程使用的版本:7.4.0下
载地址:http://archive.apache.org/dist/lucene/solr/http://archive.apa
che.org/dist/lucene/solr/下载版本:7.4.0Linux下需要下载lucene-7.4.0.tgz,win
dows下需要下载lucene-7.4.0.zip。下载lucene-7.4.0.zip并解压:bin:solr的运行脚本cont
rib:solr的一些扩展jar包,用于增强solr的功能。dist:该目录包含build过程中产生的war和jar文件,以及相关
的依赖文件。docs:solr的API文档example:solr工licenses:solr相关的一些许可信息server:so
lr运行在jetty服务器上的工程实例运行环境solr需要运行在一个Servlet容器中,Solr7.4.0要求jdk使用1.8
以上,Solr默认提供Jetty(java写的Servlet容器),本教程使用Tocmat作为Servlet容器,相关环境如下:S
olr:7.4.0Jdk环境:1.8(solr4.10不能使用jdk1.7以下)Web服务器(servlet容器):Tomcat
8X搭建步骤1.将solr-7.4.0\server\solr-webapp下的webapp复制到Tomcat\webapps
下,并改名solr;2.将solr-7.4.0\server\lib下的ext下的所有jar包复制到Tomcat\webapps
\solr\WEB-INF\lib下,以及solr-7.4.0\server\lib下以metrics开头的jar、gmetric
4j-1.0.7.jar复制到Tomcat\webapps\solr\WEB-INF\lib下;3.在Tomcat\webapp
s\solr\WEB-INF下创建classes文件夹,并把solr-7.4.0\server\resources下的log4j2
.xml复制到classes文件下;4.修改修改Tomcat\bin下的catalina.bat,增加solr.log.dir
系统变量,指定solr日志记录存放地址。ifnot"%JSSE_OPTS%"==""gotogotJsseOpts
setJSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048":gotJsseOptsse
t"JAVA_OPTS=%JAVA_OPTS%%JSSE_OPTS%"--增加下一行set"JAVA_OPTS=%JAV
A_OPTS%-Dsolr.log.dir=D:\dev_tools\apache-tomcat-8\apache-tomcat
-8.5.28-solr\solr_home\logs"5.在任意地方创建文件夹solr_home,把solr-7.4.0\se
rver下solr下的所有文件复制到这个solr_home下,在这里,我创建在Solr-7.4.0的同级目录下了,并且修改配置文件
Tomcat\webapps\solr\WEB-INF\web.xml,将下面配置的注释放开,黑体部分更改为你的solr-home
地址。?solr/home?ntry-value>D:\dev_tools\apache-tomcat-8\apache-tomcat-8.5.28-solr
\solr_home?java.lang.Stringv-entry-type>
并注释下面部分6.配合solr日志记录存放地址,在solr-home下新建logs文件夹,此处与配
置4位置配置路径一致;?7.拷贝solr-7.4.0下contrib和dist文件夹至solr-home目录下。?8.在sol
r-home目录下新建new_core文件夹;并拷贝solr-7.4.0\server\solr\configsets_defau
lt\目录下conf文件夹至solr-home\new_core下。9.修改solr-home\new_core\conf\so
lrconfig.xml文件,如下tion/lib"regex=".\.jar"/>?st/"regex="solr-cell-\d.\.jar"/>../}/contrib/clustering/lib/"regex=".\.jar"/>?.install.dir:../}/dist/"regex="solr-clustering-\d.\.jar"/>bdir="${solr.install.dir:../}/contrib/langid/lib/"regex=".\.ja
r"/>?/lib"regex=".\.jar"/>?regex="solr-velocity-\d.\.jar"/>?../}/dist/"regex="ojdbc\d.\.jar"/>?r:../}/dist/"regex="solr-dataimporthandler\d.\.jar"/>10.启动Tom
cat,访问http://localhost:8080/solr/index.htmlhttp://localhost:8080/
solr/index.html=====================ok看到页面即表示搭建成功==============
======11.配置Ik分词器,首先导入ik的jar?ik-analyzer-solr5-5.x和solr-analyz
er-ik-5.1.0两个jar包导入Tomcat\webapps\solr\WEB-INF\lib下,?然后配置solr_ho
me\new_core\conf下的managed-schema文件加入ss="solr.TextField"positionIncrementGap="100">index">--此处为创建索引分词IKTokenizerFactory"useSmart="false"/>rCaseFilterFactory"/>--此处
为查询分词索引ctory"useSmart="true"/>ry"synonyms="synonyms.txt"ignoreCase="true"expand="true"/>ilterclass="solr.LowerCaseFilterFactory"/>Type>?到此IK分词设置完成启动tomcat,访问http://localhost:8080/solr/index.htmlh
ttp://localhost:8080/solr/index.html?管理界面功能介绍Dashboard仪表盘,显示了该Sol
r实例开始启动运行的时间、版本、系统资源、jvm等信息。LoggingSolr运行日志信息CloudCloud即SolrCloud
,即Solr云(集群),当使用SolrCloud模式运行时会显示此菜单,该部分功能在第二个项目,即电商项目会讲解。CoreAd
minSolrCore的管理界面。在这里可以添加SolrCore实例。javapropertiesSolr在JVM运行环境中
的属性信息,包括类路径、文件编码、jvm内存设置等信息。TreadDump显示SolrServer中当前活跃线程信息,同时也可
以跟踪线程运行栈信息。Coreselector(重点)选择一个SolrCore进行详细操作,如下:Analysis(重点)通过此
界面可以测试索引分析器和搜索分析器的执行情况。注:solr中,分析器是绑定在域的类型中的。dataimport可以定义数据导入处理
器,从关系数据库将数据导入到Solr索引库中。默认没有配置,需要手工配置。Document(重点)通过/update表示更新索引,
solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。通过
此菜单可以创建索引、更新索引、删除索引等操作,界面如下:overwrite="true":solr在做索引的时候,如果文档已经
存在,就用xml中的文档进行替换commitWithin="1000":solr在做索引的时候,每个1000(1秒)毫秒,做
一次文档提交。为了方便测试也可以在Document中立即提交,后添加“”Query(重点)通过/se
lect执行搜索索引,必须指定“q”查询条件方可搜索。多solrcore配置配置多SolrCore的好处:一个solr工程对外通
过SorlCore提供服务,每个SolrCore相当于一个数据库,这个功能就相当于一个mysql可以运行多个数据库。将索引数据分
SolrCore存储,方便对索引数据管理维护。SolrCloud集群需要使用多core。复制原来的core目录为collectio
n2,目录结构如下:修改collection2下的core.properties,如下:演示多core的使用,在collecti
on1和collection2中分别创建索引、搜索索引。solr基本使用managed-schema.xmlmanaged-sch
ema.xml文件在SolrCore的conf目录下,它是Solr数据表配置文件,在此配置文件中定义了域以及域的类型还有其他一些配
置,在solr中域必须先定义后使用。fieldue"stored="true"required="true"multiValued="false"/>Name:域的名称
Type:域的类型Indexed:是否索引Stored:是否存储Required:是否必须multiValued:是否是多值,存储
多个值时设置为true,solr允许一个Field存储多个值,比如存储一个用户的好友id(多个),商品的图片(多个,大图和小图)f
ieldType(域类型)"positionIncrementGap="100">class="solr.StandardTokenizerFactory"/>ilterFactory"ignoreCase="true"words="stopwords.txt"/>ilterFactory"/>ass="solr.StandardTokenizerFactory"/>terFactory"ignoreCase="true"words="stopwords.txt"/>ass="solr.SynonymFilterFactory"synonyms="synonyms.txt"ignoreCas
e="true"expand="true"/>ry"/>name:域类型的名称class:指定域类型的solr类型。analy
zer:指定分词器。在FieldType定义的时候最重要的就是定义这个类型的数据在建立索引和进行查询的时候要使用的分析器analy
zer,包括分词和过滤。type:index和query。Index是创建索引,query是查询索引。tokenizer:指定分
词器filter:指定过滤器uniqueKeyid相当于主键,每个文档中必须有一个i
d域。copyField(复制域)可以将多个Field
复制到一个Field中,以便进行统一的检索。当创建索引时,solr服务器会自动的将源域的内容复制到目标域中。source:源域de
st:目标域,搜索时,指定目标域为默认搜索域,可以提供查询效率。定义目标域:必须要使用:multiValued="true"dyn
amicField(动态域)e"stored="true"/>Name:动态域的名称,是一个表达式,匹配任意字符,只要域的名称和表达式的规则能够匹配就可
以使用。例如:搜索时查询条件【product_i:钻石】就可以匹配这个动态域,可以直接使用,不用单独再定义一个product_i域
。配置中文分析器使用IKAnalyzer中文分析器。第一步:把IKAnalyzer2012FF_u1.jar添加到solr/WEB
-INF/lib目录下。第二步:复制IKAnalyzer的配置文件和自定义词典和停用词词典到solr的classpath下。第三步
:在schema.xml中添加一个自定义的fieldType,使用中文分析器。ypename="text_ik"class="solr.TextField">ltea.analyzer.lucene.IKAnalyzer"/>第四步:定义field,指定fiel
d的type属性为text_ikpe="text_ik"indexed="true"stored="true"/>_ik"type="text_ik"indexed="true"stored="false"multiValued="tr
ue"/>第五步:重启tomcat测试:配置业务field需求要使用solr实现电商网站中商品搜索。电商中商品信息在mysql数据
库中存储了,将mysql数据库中数据在solr中创建索引。需要在solr的managed-schema.xml文件定义商品Fiel
d。定义步骤先确定定义的商品document的field有哪些?可以根据mysql数据库中商品表的字段来确定:products商
品表:商品document的field包括:pid、name、catalog、catalog_name、price、descrip
tion、picture先定义Fieldtype:solr本身提供的fieldtype类型够用了不用定义新的了。再定义Field:
pid:商品id主键使用solr本身提供的:e"stored="true"required="true"multiValued="false"/>name:商品名称<
fieldname="product_name"type="text_ik"indexed="true"stored="t
rue"/>catalog:商品分类exed="true"stored="true"/>catalog_name:商品分类名称t_catalog_name"type="text_ik"indexed="true"stored="true"/>pric
e:商品价格tored="true"/>description:商品描述ype="text_ik"indexed="true"stored="false"/>picture:商品图片ame="product_picture"type="string"indexed="false"stored="true"
/>="true"stored="true"/>"indexed="true"stored="true"/>"type="string"indexed="true"stored="true"/>ct_price"type="pfloat"indexed="true"stored="true"/>e="product_description"type="text_ik"indexed="true"stored="fal
se"/>stored="true"/>dexed="true"stored="false"multiValued="true"/>dataimportHandler
插件第一步:添加jar包Dataimport的jar从solr-7.4.0\dist目录下拷贝solr-dataimportha
ndler-7.4.0.jar,复制到以下目录:修改managed-schema.xml如下:数据库驱动包把mysql数据库驱动包
,拷贝到以下目录:修改managed-schema.xml,如下:第二步:配置solrconfig.xml,添加一个request
Handlerrname="config">data-config.xml?第三
步:创建一个data-config.xml在collection1\conf\目录下创建data-config.xml文件lversion="1.0"encoding="UTF-8"?>第四步:重启tomcat第五步:点击“execute”按钮导入数据注意:到入数据前会先清空索引库,然后再导入。魁哥语录:技术在手,工作不愁
献花(0)
+1
(本文系王守奎的图...原创)