Solr5.0说明文档

一、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 表示中 查询语句的 各条件的逻辑操作 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

 

2.图形界面说明

http://www.devnote.cn/article/38.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值