`

solr简介

    博客分类:
  • solr
 
阅读更多

 

 

 

1 搜索的分类

 

1.1) 按照被搜索的资源类型
       可以转为文本的: txt  word  ppt pdf
       多媒体类型: 听歌识曲

1.2) 按照搜索的方式
        处理语义:语音搜索
         按照给定的文本来查找相关资源

 

2 全文检索

 

 

2.1) 以文本作为检索对象,找出含有检索对象的资源

2.2) 指标: 全面准确和快速

 

2.3) 特点:  只处理文本; 不处理语义; 搜索时英文不区分大小写; 结果列表有相关度排序

 

3 全文检索与数据库检索的对比

 

3.1) 匹配效果
        数据库  like %pig%    数据集查询结果不精准
         结果:pigeons(鸽子)

3.2)  查询结果是否按照相关度排序
打分机制,比如A文章出现关键词A1 100次 打分更高

3.3)  查询速度***


全文索引下, key(我是中国人) val(文章1,2)快递定位到目标位置
我是中国人   
文章1    ******我是中国人
文章2    ******我是中国人*****

 

 

 

4 全文搜索的工具

 

Lucene
Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现。
官方主页:http://lucene.apache.org/


solr
Solr是一个用java开发的独立的企业级搜索应用服务器,它提供了类似于Web-service的API接口,它是基于Lucene的全文检索服务器, 对外提供类似于Web-service的API接口,可以通过http请求进行操作。经常用于站内搜索,比如http://zookeeper.apache.org/中的搜索中的搜索。


官方主页:http://lucene.apache.org/solr/


Elasticsearch
Elasticsearch是一个采用java语言开发的,基于Lucene构造的开源,分布式的搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定可靠. Elasticsearch的数据模型是JSON.
官方主页:http://www.elasticsearch.org/

 

 

5 solr 版本:

 

Solr ( Search On Lucene Replication)
Lucene   Http(Servlet/REST)  Schema.xml  Solrconfig.xml
Solr1.x~3.x 
SolrSingle     Solr MutilCore
Solr4.x 
SolrCloud = Solr+Zookeeper

 

6  solr特点:

 

通过HTTP协议处理搜索和查询请求。
增加了缓存,让响应速度更快。
提供了一个基于web的管理界面
查询结果分类(facet)
支持分布式,支持大规模的部署(solrcloud)(Solr4.0版本开始)

7 lucene架构图:

 


 

8  solr架构:

 



 
 

 

 9 solr文档:

 

solr官方网站
http://lucene.apache.org/solr/
solr下载(v4.10.4)
http://archive.apache.org/dist/lucene/solr/4.10.4/
solr文档:
http://archive.apache.org/dist/lucene/solr/ref-guide/
http://lucene.apache.org/solr/4_10_0/tutorial.html

 

quickstart:

https://lucene.apache.org/solr/quickstart.html

 

solr下载地址:  如果想找solr的别的版本的,将后面数字替换成对应版本即可

http://apache.fayea.com/lucene/solr/5.5.0/  

 

solr历史版本下载地址: 

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

 http://apache.fayea.com/lucene/solr/

 

 

 

10 solr启动:

 

a) linux下  tar -zxvf solr-4.10.4.tgz

b) 进入solr/bin执行命令:    启动solr 以8984端口启动,默认是8983

[root@hadoop3 bin]# pwd
/opt/solr4/bin
[root@hadoop3 bin]# solr start -p 8984

 

 

如果指定了不同端口来启动solr后,打开不同浏览器访问:

别的端口访问下会报错如下:

sg=SolrCore 'collection1' is not available due to init failure: Index locked for write for core collection1,trace=org.apache.solr.common.SolrException: SolrCore 'collection1' is not available due to init failure: Index locked for write for core collection1

 

启动后访问链接:  http://hadoop3:8984/solr 即可

 

如果启动不了,如下提示:

[root@hadoop3 bin]# solr start 
Solr home directory /opt/solr4 must contain a solr.xml file! 

 表示找不到solr 家目录,需要用如下命令:  -s  表示指定solr的家目录

 

[root@hadoop3 bin]# solr start -s /opt/solr/example/solr   启动

 

 

 

c) solr常用命令:

 

solr命令讲解(solr-4.10.4/bin/solr)
start, stop, restart, healthcheck
solr start -help
solr start [-f]:启动solr,默认后台运行
solr start -p <port>:指定solr实例端口
solr start -s <dir>:指定solr的solr.solr.home
solr start -d <dir>:指定solrweb项目根路径(项目根路径下必须有webapps/solr.war)
solr -p <port> -V:查看指定solr的运行基本信息
solr -i:查看有多少solr服务正在运行
solr stop -p <port>:停止运行在指定端口的solr服务
solr stop -all:停止所有solr服务

 

 

11  solr  部署在tomcat下

           solr部署在tomcat下 编辑

 

12  solr家目录:

 

    solr解压文件名/example/solr,


  collection1是索引库,其下的 /data是索引文件   /conf是配置文件

 

solr.solr.home指solr core的配置文件的根目录
Solr启动的时候会检查solr.solr.home的Java系统属性,如果没找到的话默认指定solr/目录
使用java -jar start 启动的时候可以通过下面方式指定
java -Dsolr.solr.home=solr/ -jar start.jar
使用solr start 命令启动,默认指定solr/目录,可以用过-s <path> 指定配置文件目录
使用tomcat启动则需要修改solr项目的web.xml文件或者添加JNDI文件(或者使用export命令定义solr.solr.home,仅适用于linux环境)
设置solr.solr.home的几种方式
http://myq526180048.iteye.com/blog/1664127

 

 

 

13  solr日志:   solr解压目录/example/logs下

 


 

 14: solr界面

 

 

 

 

 

 

 solr上传数据三方式:

 

a) Documents方式:



 

 

b)  solr-4.10.4\example\exampledocs 下 post.jar/simpleposttool.java 和 xxx.xml:  上传数据

 

[root@hadoop3 exampledocs]# pwd
/opt/solr/example/exampledocs
[root@hadoop3 exampledocs]# java -jar post.jar hd.xml
SimplePostTool version 1.5
Posting files to base url http://localhost:8983/solr/update using content-type application/xml..
POSTing file hd.xml
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/update..
Time spent: 0:00:00.192

 

c)  solr-4.10.4\example\exampledocs 下 post.sh 方式上传:

 

[root@hadoop3 exampledocs]# post.sh money.xml
Posting file money.xml to http://localhost:8983/solr/update
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">8</int></lst>
</response>

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">17</int></lst>
</response>

 

 

15 solr schema:

 

solr-4.10.4\example\solr\collection1\conf\schema.xml :   
indexed=true  stored=true 是否索引 是否存储   required=true   multivalued=多值   
dynamicfield 动态字段 字段符合动态字段写法规范时就是动态字段定义的类型

copyfield:  文章= 标题+内容   --->  
<copyField source="title" dest="text"/>   将 title和author里的内容合并到 text这个字段里 查询的时候如果在text这个字段中查到 就不需要再去title author每一个来匹配了
<copyField source="author" dest="text"/>  这样这篇文章就是我们关键词存在的文章了。

 

 

 

 

16   solr查询界面参数:

 

q: *:* --->  id:zm1   id:zm?    空格 or  || 表示一个意思 或者
  price:350    price:[300 TO 400] TO要大写    闭区间
  
fq: filter query  
 id:234   过滤id为234的 可以设置多次 多次后会获取这个交集 
 
sort : 就是 order by 
       price asc/desc   后面必须带上升降序
	   
	   

fl:  filter list  过滤只显示里面填写的字段 , 多字段下用 id,name这种方式写

df:  default field 默认查询text这个字段, 如果在q查询条件中不写 name:zm 而是直接写成 zm, 
  solrconfig.xml中:定义 df为默认字段 text, 如果写id或者别的字段比如name 并且在q内没有指定列名而是列值zm  , 就表示直接查询name=zm的数据 
  <requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
      -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="df">text</str>
     </lst>

wt: write type 写出去的类型,

hl: high ligth 高亮

facet: 分组

 


 
17 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}
 
 
18  solr 查询参数 fq:
fq 值是一个查询,用于过滤查询结果,在负责查询时,可以很好的提高查询效率,fq 查询的内容会被缓存着,下次使用相同的过滤查询时,可以从缓存中命中。
使用 fq 参数时需要注意以下几点
在一个查询中,fq 参数可以设置多次。结果中将返回这些过滤条件的交集
过滤查询的结果将被分别缓存
使用filter query可以充分利用filter query cache,提高检索性能。
 
 
19 solr 查询参数hl:
hl.fl:用空格或逗号隔开的字段列表
注意:要启用某个字段的高亮功能,需要保证这个字段在schema中是store。
hl.simple.pre:前缀
hl.simple.post:后缀



对于multiValued=true的字段不要设计高亮显示
因为solr对于这个字段里面的多个值只会返回匹配高亮的那个值
高亮时记得你的schema.xml文件中要配主键(<uniqueKey>id</uniqueKey>)
因为solr对高亮的设计是,高亮部分跟结果集部分是分开返回的,如果没有配主键,那么高亮部分就无法和结果集匹配,不能够确定高亮的是哪条记录的。
 
20solr 查询参数 facet:
(类似于sql中的group by)
facet.query  
price:[* TO 20]
price:[21 TO *]
在Raw Query Parameters中可以查询多个
facet=on&facet.query=price:[* TO 20]&facet.query=price:[21 TO *]
facet.field
根据某个字段进行分组统计
facet.prefix
表示Facet字段值的前缀.比如”facet.field=cpu&facet.prefix=Intel”,那么对cpu字段进行Facet查询,返回的cpu都是以”Intel”开头的,”AMD”开头的cpu型号将不会被统计在内
 
 
21  solr 添加多个索引库:
solr-4.10.4\example\solr\collection1\core.properties  有几个这种文件是决定有几个索引库
其文件内容为:  name=collection1
cp -r collection1/  collection2/
进入 more core.properties  ====>  修改此文件 name=collection2  然后重启 这样就会有两个索引库
页面unload 这个新的库后,此文件名会变更为 collection2/core.properties.unload, 对应的数据不会删除掉
仅仅是这个关键文件名字变化而不会被索引库加载到而已。
 

 
 
 
 
 
  • 大小: 44.3 KB
  • 大小: 33.4 KB
  • 大小: 5.9 KB
  • 大小: 57.6 KB
  • 大小: 64.1 KB
  • 大小: 18.7 KB
  • 大小: 20.8 KB
分享到:
评论

相关推荐

    Nutch搜索引擎·Solr简介及安装(第2期)

    1.1 Solr 简介 1.1.1 Solr 的特性 1.1.2 Solr 的目录结构 1.1.3 Solr 与Lucene 关系 1.2 Solr 安装 1.2.1 环境介绍 1.2.2 安装Solr 1.2.3 结合Nutch

    solr概念介绍

    #### 一、Solr简介 - **Solr** 是一个高度可伸缩的企业级搜索引擎平台,支持多种语言,并且提供了丰富的API接口,包括REST风格的HTTP/XML和JSON API。它能够高效地处理大规模数据集的全文索引和搜索需求。 - **应用...

    solr

    ### Apache Solr简介 Apache Solr是一款开源的、高性能的企业级搜索平台,基于Lucene库构建。它支持高度可配置的全文检索与分析,并提供了丰富的功能集合来满足企业级搜索应用的需求。Solr可以部署在分布式环境中,...

    Solr6.2官方版参考手册

    #### 一、Solr简介与概述 **Apache Solr** 是一个高度可扩展且高性能的企业级搜索平台,它是基于 **Apache Lucene** 的开源搜索服务器。Solr 6.2 作为该系列的一个版本,提供了丰富的功能和优化性能,旨在帮助用户...

    solr资料

    #### 一、Solr简介及安装配置 **Solr** 是一个基于 **Lucene** 的开源全文检索服务器。它提供了高性能、全功能的文本搜索服务,支持复杂的搜索语法,并且能够通过插件扩展功能。 - **下载与安装**: - 下载最新...

    全文搜索技术solr Demo

    一、Solr简介 Solr是基于Lucene的开源全文搜索引擎服务器,它提供了索引、搜索、排序、高亮显示等核心功能。Solr支持多种数据源,如XML、JSON、CSV等,且可扩展性强,适用于构建大规模的分布式搜索系统。 二、Solr...

    solr教程+实例

    一、Solr简介 1.1 Solr的起源与发展:Solr最初由Yonik Seeley创建,后来成为Apache Lucene项目的一部分,发展至今已成为全球范围内广泛使用的搜索平台。 1.2 Solr的主要功能:Solr不仅提供全文索引,还支持多种数据...

    solr安装与配置

    #### 一、Solr简介 Solr是一款开源的、高性能的全文搜索引擎,广泛应用于企业级搜索系统中。它基于Lucene开发,并提供了丰富的功能和扩展性,支持多种数据源索引和检索,能够轻松地进行水平扩展。 #### 二、Solr...

    solr开发指南.pdf

    #### 一、Solr简介 **1.1.1 官网介绍** Solr是一款由Apache基金会维护的开源搜索引擎服务器,其核心是基于Lucene的Java实现。Solr提供了丰富的功能,如层级搜索、命中高亮显示、支持多种输出格式(包括XML/XSLT和...

    solr3.5配置及应用

    #### 一、Solr简介 - **定义**:Apache Solr是一款高性能、开源的搜索服务器。它使用Java语言开发,并且主要基于HTTP协议和Apache Lucene技术实现。 - **数据模型**:在Solr中,资源以“文档”(Document)的形式...

    图解solr5.0.1 war包方式安装【原创】

    #### 一、Solr简介及WAR包安装概述 Solr是一款开源的全文搜索引擎平台,由Apache软件基金会开发维护,广泛应用于各种需要进行高性能搜索的应用场景。Solr支持多种语言、协议和工具,能够提供高度可扩展性和容错能力...

    Solr技术分析及运用

    1. Solr简介: - Solr是Java开发的搜索引擎服务器,它集成了Lucene库,提供了丰富的功能,如层面搜索、命中醒目显示和多种输出格式支持(XML、XSLT、JSON等)。 - 安装和配置过程简单,内置HTTP管理界面,便于管理...

    Solr安装部署攻略

    1. **Solr简介** Apache Solr是基于Lucene的搜索平台,它提供了一个分布式、可扩展、易用的搜索和导航基础设施。Solr支持多种数据源,并能处理大量数据,提供丰富的查询语法和自定义排序功能。 2. **系统需求** ...

    solr自学详细教程,吐血总结

    Solr简介** - **什么是Solr**:Solr是Apache软件基金会的一个顶级项目,它基于Lucene,设计成一个独立的服务,支持HTTP接口,能够快速构建和管理全文索引,提供丰富的查询语法和优化的搜索性能。Solr运行在Servlet...

    solr搜索服务器安装配置

    #### 一、Solr简介 Apache Solr是一款开源的高性能全文搜索引擎,基于Lucene库构建。它采用Java开发,提供了丰富的API接口,支持多种编程语言,使得开发者能够轻松地集成搜索功能到自己的应用程序中。Solr的特点包括...

    solr中文分词器

    一、Solr简介 Apache Solr是一款开源的企业级搜索平台,基于Java开发,它可以提供高效的全文检索、 faceted search(分面搜索)、动态聚类、富文档处理等功能。Solr的核心功能是建立索引和执行查询,通过插件机制,...

    图解Solr5.3.1 war包方式安装

    #### 一、Solr简介 Solr是一款开源的全文搜索引擎平台,基于Java开发,能够提供高效、稳定的搜索服务。Solr利用Lucene作为其核心搜索库,同时提供了更加丰富的功能集,支持分布式搜索等高级特性。Solr广泛应用于...

Global site tag (gtag.js) - Google Analytics