solr简介
Solr 是什么?
Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。
Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。
它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。
在eclipse中调试solr,便于我们更加的清晰的了解solr的运行原理,下面详细的写一下如何eclipse部署solr(4.10.0版本)的web工程。
首先新建一个动态的Web工程 删除WebContent下的所有内容,


解压solr.war包后,然后拷贝解压后所有的东西(除了solr.war本身),到刚才被清空的WebContent目录下:
拷贝完后的项目工程如下所以,有时候这里可能由于js校验出错,不影响运行,可忽略,如果有洁癖的同学们,可以找下,如何去掉js的校验即可。
在WebContent下新建一个solr_home文件夹,用来存放核心(索引库)

将解压后的 solr 4.10.0文件夹下的exampke下的mukticore内的所有文件 拷贝到solr_home文件夹中:

修改web.xml中 <env-entry>的路径,指向咱们新建的 solr_home ,这里我用的是绝对路径


成功后的截图如下:

至此,大功告成!

引擎的一些操作:






- 三种方式:
- 1、通过命令行(路径+核心名+jar+xml)
- 首先将solr-4.10.0\example\exampledocs下的post.jar文件 放到咱们索引库里的exampledocs文件夹下
- 选定指定的xml数据文件进行导入数据到索引库,*号代表 所有xml数据文件
- 命令如下:
- java -Durl=http://localhost:8080/solr-test/my_core/update -Ddata=files -jar post.jar *.xml
添加数据成功!


- 导入JAR包:
- 新建data-confg.xml,到conf文件夹下
- <dataConfig><!-- 数据源 --><dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/pengj" user="root"password="root" transactionIsolation="TRANSACTION_READ_COMMITTED" holdability="CLOSE_CURSORS_AT_COMMIT" /><document><!-- pk注意一定要与field中的colum对应上 --><entity name="stu" pk='id' transformer="RegexTransformer"query="select * from t_stu where id > ${dataimporter.request.ffff};"><field column='id' name='id' /><field column='name' name='name' /></entity></document></dataConfig>
- 一个配置文件可以配置多个数据源。增加一个dataSource元素就可以增加一个数据源了。
- 添加name属性可以区分不同的数据源,如:
name="ds-1" ; entity标签中指定对应数据源。 如:
dataSource="ds-1"。
- solrconfig.xml文件中 加载data-confg.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst></requestHandler>
打开solr试图管理界面:

例子:
4、通过solrj 进行增加索引数据(会有单独api文件 给你们)

【注:以下是比较常用的参数说明】
q - 查询字符串,这个是必须的。如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京)
fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=Name:张三&fq=CreateDate:[20081001 TO 20091031],找关键字mm,并且CreateDate是20081001
fl - 指定返回那些字段内容,用逗号或空格分隔多个。
start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。
rows - 指定返回结果最多有多少条记录,配合start来实现分页。
sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(score desc, price asc)表示先 “score” 降序, 再 “price” 升序,默认是相关性降序。
wt - (writer type)指定输出格式,可以有 xml, json, php, phps。
fl表示索引显示那些field( *表示所有field,如果想查询指定字段用逗号或空格隔开(如:Name,SKU,ShortDescription或Name SKU ShortDescription【注:字段是严格区分大小写的】))
q.op 表示q 中 查询语句的 各条件的逻辑操作 AND(与) OR(或)
hl 是否高亮 ,如hl=true
hl.fl 高亮field ,hl.fl=Name,SKU
hl.snippets :默认是1,这里设置为3个片段
hl.simple.pre 高亮前面的格式
hl.simple.post 高亮后面的格式
facet 是否启动统计
facet.field 统计field


分词器简介与配置
Solr默认是没有中文分词的,其中solr默认的比较常用的数据类型有下面几种:string、long、int。
IK分词器,是国人做的一个开源的分词器,所以主要说下IK分词器的配置。
下载 "IK Analyzer 2012FF_hf1.zip"包。 详见http://www.solrcn.com/?tag=ik%E5%88%86%E8%AF%8D%E5%99%A8
解压后的目录结构:
其中已经有比较详细的文档了,但是文档中并没有对solr分词器的配置有详细的说明。
所以请1511班同学们 继续往下看:

具体配置:
步骤一:将 IKAnalyzer2012FF_u1.jar拷贝到目录"$TOMCAT_HOME \webapps\solr\WEB-INF\lib"中
步骤二:将IKAnalyzer.cfg.xml、stopword.dic,myext.dic拷贝到目录$TOMCAT_HOME \webapps\solr\WEB-INF\classes目录下,没有则新建classes目录。
步骤三:在每个核心中的schema.xml中配置IK分词器:
这样就可以使用ik分词器了。
其中isMaxWordLength是指分词的细粒度,可以分别制定index索引和query查询的分词细粒度,
建议将index的isMaxWordLength设置为false,这样就采用最细分词,是索引更精确,查询时尽量能匹配,
而将query的isMaxWordLength设置为true,采用最大分词,这样能够使查询出来的结果更符合用户的需求。
这样查询时分词才能成功,比如搜索中华人民共和国,如果不配置的话,默认是短语匹配,就只搜索文档中包含中华人民共和国的结果,但是如果配置了查询分词,那么中华、人民….都能被匹配。
注意: solr4.8以上,需要把各核心schema.xml中的<schema name="example core zero" version="1.1">版本由1.1改为1.5
IK分词器使用与测试
之后在schema.xml中配置一个field(字段)用于测试,如下:(分词字段)
- <field name="name" type="text_ik" indexed="true" stored="true"/>
然后打开solr的admin页面:
可以看到分词之后的效果。
维护索引
在一般系统中维护的都是增删改,在Solr中的维护功能是增删和优化功能,
在Solr中的修改操作就是先删掉再添加.在做索引维护之前,
首先要做的是配置 schema.xml主要是按上面章节中的说明
设置好字段信息(名称,类型,索引,存储,分词等信息),
大概就像在数据库中新建一个表一样.设置好 schema.xml就可以进行索引相关操作了.
优化索引
优化Lucene 的索引文件以改进搜索性能。索引完成后执行一下优化通常比较好。
如果更新比较频繁,则应该在使用率较低的时候安排优化。
一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。
server.optimize();//不要频繁的调用..尽量在无人使用时调用 |
solr简介的更多相关文章
- Nutch搜索引擎(第2期)_ Solr简介及安装
1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...
- Nutch搜索引擎Solr简介及安装
Nutch搜索引擎(第2期)_ Solr简介及安装 1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...
- solr简介与安装
solr简介: Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引 ...
- (一)Solr——简介和安装配置
1. solr简介 1.1 Solr是什么 Solr是apache的顶级开源项目,它是使用java开发 ,基于lucene的全文检索服务器. Solr和lucene的版本是同步更新的,最新的版本是7. ...
- solr简介、学习详细过程!(超详细~)
solr是什么呢? 一.Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中. 二.Solr 提供了层面搜索(就是统计).命中醒目显示并且支持多种输出 ...
- solr简介——(九)
下载: http://archive.apache.org/dist/lucene/solr/ 1.什么是solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lu ...
- solr 学习之简介及安装
一.solr简介 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索 ...
- solr 安装
1:solr简介 solr是一个开源的搜索引擎,是对lucene做了封装,对外提供类似于webservice接口, 可以使用http请求的方式对solr进行操作. lucene.solr.elasti ...
- Solr使用入门指南
本文转自http://chuanliang2007.spaces.live.com/blog/cns!E5B7AB2851A4C9D2!499.entry?wa=wsignin1.0 由于搜索引擎功能 ...
随机推荐
- 1893. [国家集训队2011]等差子序列(bitset)
★★ 输入文件:nt2011_sequence.in 输出文件:nt2011_sequence.out 简单对比时间限制:0.3 s 内存限制:512 MB [试题来源] 2011中国 ...
- HDU 1166 敌兵布阵(线段树单节点更新 区间求和)
http://acm.hdu.edu.cn/showproblem.php?pid=1166 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Dere ...
- mysql优化篇之表分区
当表的数据量达到一定数量时(如单个.myd文件都达到10G,myd 是mysql的数据文件),这时候读取起来必然效率很低. 1.从业务角度可以解决(分表) ...
- Vue代理&跨域
Vue 本地代理 纯前端技术解决跨域 vue-axios获取数据很多小伙伴都会使用,但如果前后端分离且后台没设置跨域许可,那要怎样才能解决跨域问题? 常用方法有几种: 通过jsonp跨域 通过修改do ...
- centos7 安装rsyslog
http://blog.csdn.net/u011630575/article/details/50896781 http://blog.chinaunix.net/uid-21142030-id-5 ...
- 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用
首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ...
- 《R实战》读书笔记二
第一章 R简单介绍 本章概要 1安装R 2理解R语言 3执行R程序 本章所介绍的内容概括例如以下. 一个典型的数据分析步骤如图1所看到的. 图1:典型数据分析步骤 简而言之,现今的数据分析要求我们从多 ...
- Android——4.2 - 3G移植之路之 APN (五)
APN,这东西对于刚接触的人来说并非那么好理解.对于3G移植上网不可缺少,这里记录一下. 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/detail ...
- 文件的默认权限:umask
1. 文件的默认权限 linux下当我们新建一个文件和文件夹时,该文件和文件夹的默认权限是什么? 通过umask命令来查看: $ umask 0002 $ umask -S u=rwx,g=rwx,o ...
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
[032-Longest Valid Parentheses(最长有效括号)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a string contai ...