一、solr介绍
Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。
二、Solr的特性包括
1.高级的全文搜索功能
2.专为高通量的网络流量进行的优化
3.基于开放接口(XML和HTTP)的标准
4.综合的HTML管理界面
5.可伸缩性-能够有效地复制到另外一个Solr搜索服务器
6.使用XML配置达到灵活性和适配性
7.可扩展的插件体系
8.支持增量式更新
三、tomcat7下部署solr
1.solr5.0下载地址
http://apache.fayea.com/lucene/solr/5.0.0/solr-5.0.0.tgz
2. 部署Solr
将solr-5.0.0.tgz解压缩,然后将solr5.0.0/server/webapps目录下的solr.war拷贝到自己apache-tomcat-7.0.32/webapps/,启动tomcat解压solr.war
(1)配置solr_home
a:修改apache-tomcat-7.0.32/webapps/solr/WEB-INF/web.xml,取消注释,配置“env-entry-value”的值为
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>
D:/software/solr-5.0.0/example/example-DIH/solr
</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
注:也可以自己新建一个solr目录,然后拷贝example/example-DIH/solr所有内容到新建的solr目录
b:拷贝dist下的jar包到WEB-INF/lib下
(2)配置日志
将solr目录下solr-5.0.0/server/lib/ext中的jar包copy到tomcat的solr/WEB-INF/lib下。这时候虽然添加jar包,但是没有对应的日志配置,需要将solr-5.0.0/server/resources/下的log4j.properties也放到solr/WEB-INF/classes/下。(这步非常关键,solr5.0.0的war包中不包含任何日志的jar包,需要自己手动添加)
3.启动solr
(1) 重新关闭在开启tomcat
(2)浏览器打开 http://localhost:8080/solr 验证是否安装成功
四、创建搜索实例
1.{solr安装路径}/server/solr/新建一个文件夹命名为test
2.拷贝{solr安装路径}/server/solr/configsets/sample_techproducts_configs下的文件到test目录下
3.在后台采用如下配置,然后点击【add core】按钮完成搜索实例的添加
添加完以后就能看见test实例
4.solr5.0下自带db、mail、rss、solr、tika实例
五、Solr导入数据
1.可以使用DIH(DataImportHandler)从数据库导入数据
(1) 导入相关jar包
在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
(2)配置handler
在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
(3)配置数据源,源数据与索引的隐射关系
在{solr安装路径}/server/solr/test/conf/下新建db-data-config.xml,配置如下:
<dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/test" user="root" password="root"/> <document name="jc_content_txt">
<entity name="JcContetTxt" pk="id"
query="select * from jc_content_txt limit ${dataimporter.request.length} offset ${dataimporter.request.offset}"
transformer="RegexTransformer">
<field column="content_id" name="id" />
<field column="txt" name="txt" />
</entity>
</document></dataConfig>
注:field 对应的name值必须在config目录下的schema.xml文件中存在。如上述的txt不存在,则在schema.xml中添加
<field name="txt" type="text_general" indexed="true" stored="true"/>
indexed表示需不需要建立索引,以便之后对这个field进行查询;
stored表示需不需要随索引同时存储这个field本身的内容,以便查询时直接从结果中获取该内容,一般大数据(比如文件内容本身)不会和索引一起保存,节省资源,防止索引过大。 索引本身和被索引的内容要分清,不理解的话,倒排索引:http://zh.wikipedia.org/wiki/倒排索引
(4)Reload test搜索实例,利用图形界面执行dataimport
2.支持CSV文件导入,因此Excel数据也能轻松导入
3.支持JSON格式文档
4.二进制文档比如:Word、PDF
5.还能以编程的方式来自定义导入
见:http://svn.amssy.com/svn/okdi/trunk/server/java/api/solr
六、Solr查询数据
1. 常用查询参数说明
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官方的技术文档】
2. Solr运算符
(1)“:” 指定字段查指定值,如返回所有值*:*
(2)“?” 表示单个任意字符的通配
(3)“*” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)
(4)“~” 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。
(5)邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10
(6)“^” 控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache
(7)布尔操作符AND、||
(8)布尔操作符OR、&&
(9)布尔操作符NOT、!、- (排除操作符不能单独与项使用构成查询)
(10)“+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在
(11) ( ) 用于构成子查询
(12) [] 包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710]
(13) {} 不包含范围检索,如检索某时间段记录,不包含头尾
date:{200707 TO 200710}
(14)/ 转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? : /
注:①“+”和”-“表示对单个查询单元的修饰,and 、or 、 not 是对两个查询单元是否做交集或者做差集还是取反的操作的符号
比如:AB:china +AB:america ,表示的是AB:china忽略不计可有可无,必须满足第二个条件才是对的,而不是你所认为的必须满足这两个搜索条件
如果输入:AB:china AND AB:america ,解析出来的结果是两个条件同时满足,即+AB:china AND +AB:america或+AB:china +AB:america
总而言之,查询语法: 修饰符 字段名:查询关键词 AND/OR/NOT 修饰符 字段名:查询关键词
3.Solr查询语法
(1)最普通的查询,比如查询姓张的人( Name:张),如果是精准性搜索相当于SQL SERVER中的LIKE搜索这需要带引号(""),比如查询含有北京的(Address:"北京")
(2)多条件查询,注:如果是针对单个字段进行搜索的可以用(Name:搜索条件加运算符(OR、AND、NOT) Name:搜索条件),比如模糊查询( Name:张 OR Name:李 )单个字段多条件搜索不建议这样写,一般建议是在单个字段里进行条件筛选,如( Name:张 OR 李),多个字段查询(Name:张 + Address:北京 )
(3)排序,比如根据姓名升序(Name asc),降序(Name desc)
七、solr参考文档地址
1.较全的说明
http://blog.csdn.net/awj3584/article/details/16963525
相关推荐
在Solr 5.0.0中使用IK分词器,可以显著提高中文文本的检索效果,通过智能分词和新词识别,使得用户输入的关键词能够更准确地匹配到文档中的内容。同时,通过调整分词器的配置,还能进一步优化搜索体验,满足不同的...
Java整合Solr5.0的过程中,SolrJ是Java客户端库,用于与Solr服务器进行交互,提供了方便的API来执行各种操作。本篇文章将详细阐述如何使用SolrJ进行索引管理和查询。 首先,集成SolrJ需要将相应的依赖库引入项目。...
在Solr 5.3版本中,IKAnalyzer与solr-analyzer-extra-5.3.jar结合使用,可以为中文文档提供强大的分词支持。Solr是一个基于Lucene的全文检索服务器,它允许开发者通过简单的HTTP接口来创建、维护和搜索索引。中文...
描述中提到,从4.0到5.0是Solr的一个重大版本更新,这涉及到许多内部结构和功能的调整。在这个过程中,Solr引入了新的特性和改进,同时可能对旧的API和配置文件格式进行了调整,以提高性能和用户体验。4.10.3作为4.x...
Solr-4.10.3是该系统的一个稳定版本,受到许多用户的青睐,特别是在4.0到5.0的大版本更新之后。 在4.0到5.0的升级过程中,Solr引入了大量的新特性和改进,这些变化主要体现在以下几个方面: 1. **Cloud功能增强**...
Apache Solr是一款流行的开源全文搜索引擎,提供高效的全文检索、文档分类、拼写建议等功能。Solr-Solrj是专门为Java开发者设计的,它简化了与Solr服务器通信的过程,允许开发者通过Java API轻松地发送HTTP请求,...
分词器在Solr中的主要作用是将用户输入的中文查询字符串分解成词语,然后Solr会根据这些词语来匹配索引中的文档,从而返回相关的搜索结果。IK Analyzer支持多种分词模式,如精确模式、全模式、最短路径模式等,可以...
9. **文档资源**:IKAnalyzer-5.0提供的资料可能包含了用户手册、API文档、示例代码等,帮助开发者快速理解和应用该工具。 10. **社区支持**:作为一个开源项目,IKAnalyzer拥有活跃的社区,用户可以在遇到问题时...
课时02:es与solr对比介绍 课时03:centos的安装虚拟机网络配置 课时04:elasticsearch5.0集群安装 课时05:elasticsearch head插件讲解 课时06:elasticsearch kibana安装与使用 课时07:ik分词器插件的编译安装 ...
<value>Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident) <name>http.agent.version</name> <value>6.0 <name>http.robots.agents</name> <value>GuoRuiAgent,* <name>...
1. **课时2:es与solr对比介绍**:通过对ElasticSearch和Solr的功能特性和适用场景进行对比分析,加深对这两种搜索引擎的理解。 2. **课时4:elasticsearch5.0集群安装**:详细介绍如何安装配置ElasticSearch集群,...
Lucene,作为最广泛使用的全文搜索引擎库,自5.0版本起,引入了Facet模块,极大地增强了其在数据分析和信息检索方面的功能。在Lucene5中,Facet系统是基于前缀编码(Prefix Encoding)实现的,这使得在大规模数据集...