jarod8016b 发表于 2015-11-12 09:49:14

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=&quot;${solr.install.dir:../../../..}/dist/&quot; regex=&quot;solr-dataimporthandler-.*\.jar&quot; />
(2)配置handler
在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码
<requestHandler name=&quot;/dataimport&quot; class=&quot;solr.DataImportHandler&quot;>
    <lst name=&quot;defaults&quot;>
      <str name=&quot;config&quot;>db-data-config.xml</str>
    </lst>
</requestHandler>
(3)配置数据源,源数据与索引的隐射关系
在{solr安装路径}/server/solr/test/conf/下新建db-data-config.xml,配置如下:
<dataConfig>    <dataSource driver=&quot;com.mysql.jdbc.Driver&quot; url=&quot;jdbc:mysql://127.0.0.1:3306/test&quot; user=&quot;root&quot; password=&quot;root&quot;/>    <document name=&quot;jc_content_txt&quot;>
      <entity name=&quot;JcContetTxt&quot; pk=&quot;id&quot;
                query=&quot;select * from jc_content_txt limit ${dataimporter.request.length} offset ${dataimporter.request.offset}&quot;
                transformer=&quot;RegexTransformer&quot;>
            <field column=&quot;content_id&quot; name=&quot;id&quot; />
            <field column=&quot;txt&quot; name=&quot;txt&quot; />         
      </entity>
    </document></dataConfig>

注:field 对应的name值必须在config目录下的schema.xml文件中存在。如上述的txt不存在,则在schema.xml中添加
<field name=&quot;txt&quot; type=&quot;text_general&quot; indexed=&quot;true&quot; stored=&quot;true&quot;/>
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:,找关键字mm,并且CreateDate是20081001
fl - 指定返回那些字段内容,用逗号或空格分隔多个。
start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。
rows - 指定返回结果最多有多少条记录,配合start来实现分页。
sort - 排序,格式:sort=<field name>&#43;<desc|asc>[,<field name>&#43;<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)“&#43;” 存在操作符,要求符号”&#43;”后的项必须在文档相应的域中存在
(11) ( ) 用于构成子查询
(12) [] 包含范围检索,如检索某时间段记录,包含头尾,date:
(13) {} 不包含范围检索,如检索某时间段记录,不包含头尾
date:{200707 TO 200710}
(14)/ 转义操作符,特殊字符包括&#43; - && || ! ( ) { } [ ] ^ ” ~ * ? : /
注:①“&#43;”和”-“表示对单个查询单元的修饰,and 、or 、 not 是对两个查询单元是否做交集或者做差集还是取反的操作的符号
   比如:AB:china &#43;AB:america ,表示的是AB:china忽略不计可有可无,必须满足第二个条件才是对的,而不是你所认为的必须满足这两个搜索条件
   如果输入:AB:china AND AB:america ,解析出来的结果是两个条件同时满足,即&#43;AB:china AND &#43;AB:america或&#43;AB:china &#43;AB:america
  总而言之,查询语法: 修饰符 字段名:查询关键词 AND/OR/NOT 修饰符 字段名:查询关键词
3.Solr查询语法
(1)最普通的查询,比如查询姓张的人( Name:张),如果是精准性搜索相当于SQL SERVER中的LIKE搜索这需要带引号(&quot;&quot;),比如查询含有北京的(Address:&quot;北京&quot;)
(2)多条件查询,注:如果是针对单个字段进行搜索的可以用(Name:搜索条件加运算符(OR、AND、NOT) Name:搜索条件),比如模糊查询( Name:张 OR Name:李 )单个字段多条件搜索不建议这样写,一般建议是在单个字段里进行条件筛选,如( Name:张 OR 李),多个字段查询(Name:张 &#43; Address:北京 )
(3)排序,比如根据姓名升序(Name asc),降序(Name desc)
七、solr参考文档地址
1.较全的说明
  http://blog.iyunv.com/awj3584/article/details/16963525
  
2.图形界面说明
  http://www.devnote.cn/article/38.html
         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Solr5.0说明文档