solr 基本配置

Solr是什么

Solr是apache的顶级开源项目,它是使用java开发 ,基于lucene的全文检索服务器。
Solr比lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对lucene的性能进行了优化

Solr是如何实现全文检索的

  • 索引流程:solr客户端(浏览器、java程序)可以向solr服务端发送POST请求,请求内容是包含Field等 信息的一个xml文档,通过该文档,solr实现对索引的维护(增删改)。
  • 搜索流程:solr客户端(浏览器、java程序)可以向solr服务端发送GET请求,solr服务器返回一个xml 文档。

Solr 和lucene 的区别

Lucene是一个全文检索引擎工具包,它只是一个jar包,不能独立运行,对外提供服务。

Solr是一个全文检索服务器,它可以单独运行在servlet容器,可以单独对外提供搜索和索引功能。
Solr比lucene在开发全文检索功能时,更快捷、更方便。

Solr安装配置

下载Solr

http://archive.apache.org/dist/lucene/solr/

solr 常用命令

solr 命令所在位置

已下载solr文件夹bin下面

启动solr

./solr restart 重启项目
./solr start   启动
./solr start -p 8984 指定端口启动
./solr restart -m 2g -force 指定占用多大内存
在浏览器输入:http://127.0.0.1:8983/solr 即可

创建solr core

./solr create -c newcore(core名称) -force 刷新网页可以查看新建的core

删除core

./solr delete -c newcore12(core名称)

删除core里面所有的数据

post -c abc(core名称) -d "<delete><query>*:*</query></delete>"    

停止solr

 ./solr stop -all

查看solr状态

./solr staus

帮助

./solr help

目录结构

Solr1.png
Solr2.png
Solr3.png

3.3.1 Solr的安装部署

  • 第一步:安装tomcat
  • 第二步 将solr.war包,拷贝到tomcat的webapps目录下
  • 第三步:解压缩war包解压缩之后,将war包删掉
  • 第四步:添加solr的扩展服务包
![Uploading Solr5_668521.png . . .]

将以上jar包,添加到以下目录

Solr5.png
  • 第五步:添加log4j.properties 拷贝example》resources 到solr 的Web-INf>classes
  • 第六步:在web.xml中指定solrhome的目录
Solr6.png

Solrcore的安装

Solrcore和solrhome
Solrhome是solr服务运行的主目录,一个solrhome目录里面包含多个solrcore目录,一个solrcore目录里面了一个solr实例运行时所需要的配置文件和数据文件。

每一个solrcore都可以单独对外提供搜索和索引服务。
多个solrcore之间没有关系。
Solrcore和solrhome的目录结构
Solrhome的目录结构
Solr7.png
Solrcore目录
Solr8.png
Solrcore的安装
安装solrcore需要先安装solrhome
将以下目录的文件进行拷贝     到solrhome 文件夹下面
Solr9.png
Solr10.png

这样solrhome和solrcore就安装成功了。

Solrcore配置

在solrcore的conf目录下,有一个solrconfig.xml的配置文件,该配置文件,配置来solrcor的运行信息
在该文件中,主要配置三个标签:lib标签、datadir标签、requestHandler标签

如果对该文件不进行配置也可以,即使用默认的配置项。

Lib 标签
  • Solrcore需要添加一个扩展依赖包,通过lib标签来指定依赖包的地址
  • solr.install.dir:表示solrcore的安装目录
    将以下目录的文件进行拷贝
Solr11.png

复制到以下目录

Solr12.png

修改lib标签

Solr13.png

####### datadir标签
每个SolrCore都有自己的索引文件目录 ,默认在SolrCore目录下的data中。
如果不想使用默认的目录也可以通过solrConfig.xml更改索引目录 ,如下:

Solr14.png

####### requestHandler标签
requestHandler请求处理器,定义了索引和搜索的访问方式。

  • 通过/update维护索引,可以完成索引的添加、修改、删除操作。
    <requestHandler name="/update" class="solr.UpdateRequestHandler">

  • 通过/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>


solr 界面介绍

Solr15.png

Dashboard

仪表盘,显示了该Solr实例开始启动运行的时间、版本、系统资源、jvm等信息。

Logging

Solr运行日志信息

Cloud

Cloud即SolrCloud,即Solr云(集群),当使用Solr Cloud模式运行时会显示此菜单.

Core Admin

Solr Core的管理界面。在这里可以添加SolrCore实例。

java properties

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

Tread Dump

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

Core selector

选择一个SolrCore进行详细操作
Solr16.png
Analysis
Solr17.png
通过此界面可以测试索引分析器和搜索分析器的执行情况。
注:solr中,分析器是绑定在域的类型中的。
dataimport
可以定义数据导入处理器,从关系数据库将数据导入到Solr索引库中。
默认没有配置,需要手工配置。
Document
通过/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。

通过此菜单可以创建索引、更新索引、删除索引等操作
overwrite="true" : solr在做索引的时候,如果文档已经存在,就用xml中的文档进行替换
commitWithin="1000" : solr 在做索引的时候,每个1000(1秒)毫秒,做一次文档提交。为了方便测试也可以在Document中立即提交,</doc>后添加“<commit/>”
Query
通过/select执行搜索索引,必须指定“q”查询条件方可搜索

多solrcore的配置

配置多solrcore的好处:

  • 在进行solrcloud的时候,必须配置多solrcore .
  • 每个solrcore之间是独立的,都可以单独对外提供服务。不同的业务模块可以使用不同的solrcore来提供搜索和索引服务。

添加solrcore

  • 第一步:复制solrhome下的collection1目录到本目录下,修改名称为collection2
  • 第二步:修改solrcore目录下的core.properties
  • 第三步:重启tomcat

使用命令
./bin/solr create -c logsys_clinic_analyes -force
http://blog.csdn.net/matthewei6/article/details/50620600

solr 重启
./solr restart -m 2g -force

Solr的基本使用

Schema.xml

在schema.xml文件中,主要配置了solrcore的一些数据信息,包括Field和FieldType的定义等信息,在solr中,Field和FieldType都需要先定义后使用。

Filed

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
Name:指定域的名称
Type:指定域的类型
Indexed:是否索引
Stored:是否存储
Required:是否必须
multiValued:是否多值,比如商品信息中,一个商品有多张图片,一个Field像存储多个值的话,必须将multiValued设置为true。

dynamicField

动态域
<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
Name:指定动态域的命名规则

uniqueKey

指定唯一键
<uniqueKey>id</uniqueKey>
其中的id是在Field标签中已经定义好的域名,而且该域要设置为required为true。
一个schema.xml文件中必须有且仅有一个唯一键

copyField

复制域
  <copyField source="product_name" dest="product_keywords" />
Source:要复制的源域的域名
Dest:目标域的域名

由dest指的的目标域,必须设置multiValued为true。

FieldType

定义域的类型
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

Name:指定域类型的名称
Class:指定该域类型对应的solr的类型
Analyzer:指定分析器
Type:index、query,分别指定搜索和索引时的分析器
Tokenizer:指定分词器
Filter:指定过滤器

中文分词

使用ikanalyzer进行中文分词

  • 第一步 将ikanalyzer的jar包拷贝到以下目录
Solr18.png
  • 第二步:将ikanalyzer的扩展词库的配置文件拷贝到 目录
Solr19.png
  • 第三步:配置FieldType

    <fieldType name="text_ik" class="solr.TextField">
    <analyzer type="index" useSmart="false"
    class="org.wltea.analyzer.lucene.IKAnalyzer" />
    <analyzer type="query" useSmart="true"
    class="org.wltea.analyzer.lucene.IKAnalyzer" />
    </fieldType>

  • 第四步:配置使用中文分词的Field
    <field name="product_name" type="text_ik" indexed="true" stored="true" multiValued="false" />

  • 第五步:重启tomcat

Dataimport

该插件可以将数据库中指定的sql语句的结果导入到solr索引库中。
  • 第一步:添加jar包
    • Dataimport的jar包 复制以下目录的jar包
Solr20.png
添加到以下目录
Solr21.png
修改solrconfig.xml文件,添加lib标签
`<lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />`
* MySQL数据库驱动包
    将mysql的驱动包,复制到以下目录
Solr22.png
    修改solrconfig.xml文件,添加lib标签
    `<lib dir="${solr.install.dir:../..}/contrib/db/lib" regex=".*\.jar" />`
  • 第二步:配置requestHandler
    在solrconfig.xml中,添加一个dataimport的requestHandler
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
    <str name="config">data-config.xml</str>
    </lst>

    </requestHandler>

  • 第三步:创建data-config.xml
    在solrconfig.xml同级目录下,创建data-config.xml

  • 第四步: 重启tomcat


2016.12.19

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容