文档章节

【Solr】- Apache SolrTM 5.3.1 Documentation

ZeroneLove
 ZeroneLove
发布于 02/26 22:41
字数 3310
阅读 7
收藏 0

Solr Quick Start: Apache Solr官网翻译

概要

文档主要包含Solr启动、运行Solr导入各种形式的数据源到多个集合中,近距离体验Solr管理员和搜索接口

要求

  • 系统要求
  • Apache Solr 发布包

开始

运行浏览器显示指南,同一台机器上的Solr服务器指南帮助正确入门Solr Server 开始解压Solr发布包,将Solr的解压目录放在工作目录下,注意基础目录名可能与下载的Solr的版本号不同,例如Unix、Cygwin或者MacOS的shell版本不同

Linux指令

:$ ls solr*
    solr-5.0.0.zip
:$ unzip -q solr-5.0.0.zip
:$ cd solr-5.0.0/

Solr Cloud 结构层次图

Solr Cloud: Solr 基于Zookeeper构建的分布式搜索系统,zookeeper保证高可用

Collection: 对应standby模式下的Solr Core

Shard(分片): 对应Collection逻辑划分的Core,可理解为多个Shard组成一个完整意义上的Solr Core,若是单机模式下:1 Solr Core = 1 Shard = 1 Core = 1 replica,Shard对于用户是透明的,主要通过上一层的Collection提供一个Façade接口

Core: Solr Core 1个包含索引和配置文件的运行实例,一个Core对应一个Replica实际提供索引服务,SolrCloud提供冗余机制,多个Replica提供的索引数据服务是相同的

Replica: Shard真实物理存储,可提供类似HDFS的备份机制保证冗余特性

Solr的命令表

Linux:

  • 普通solr命令:solr start -s /usr/local/hadoop/solr-5.3.1/server/solr
  • 启动Solr Cloud指令:
    • bin/solr start -e cloud –noprompt

命令分析:Solr Cloud 测试样例,会在 example下创建cloud目录,并且创建两个物理节点Node01、Node02, gettingstarted是逻辑意义上的Solr Core, Solr Core通过分片包含2个备份

Windows启动Solr命令:solr start(默认参数启动)

Windows关闭Solr命令:solr stop –all

Solr Admin UI查看Solr运行状态:http://localhost:8983/solr/

SolrCloud 运行在2个节点,端口7574和端口8983,命令执行后默认自动创建的Solr Core: gettingstarted,gettingstarted由两个shard组成,每个shard存在2个replica,Solr的管理员界面Cloud Tab 很好的展示Collection

解释:

  • SolrHome:Solr所有的索引数据集合
  • Gettingstarted:Solr Core名称

索引数据

Solr服务器启动、运行后不包含数据,Solr安装目录包含bin/post 工具,主要是帮助将各种类型的文档在Solr启动的时候导入Solr,这里将Post工具用于索引下面的案例。需要在Solr的安装目录下使用命令shell运行案例。

注意:bin/post工具和windows 脚本完全不一样,但是内部调用的Java程序是可获得的,详情请看:https://cwiki.apache.org/confluence/display/solr/Post+Tool#PostTool-Windows

索引rich 文件目录

Rich是指HMTL/PDF/MSOffice/简单文本,bin/post工具支持文件目录处理(包含子目录),并且将少量的内容导入Solr,便于查询和索引,Solr安装目录包含doc的子目录,可以很方便的通过下面命令将文件导入到Solr索引库:

bin/post -c gettingstarted docs/

命令参数详解

  • -c gettingstarted:索引导入Solr Core的名称
  • docs/:solr安装目录下doc目录相对路径

现在可索引存储在gettingstarted的成千上万的文件并且提交索引更新,用户可以通过Solr Admin UI的Query选项卡搜索“solr”关键字,在‘q’一行使用自定义的内容取代’*’,然后点击”Execute Query”查询相关信息

建立数据索引,重新运行导入索引命令:bin/post -c gettingstarted docs/后,重新导入同一个Collection索引数据会清空原先的数据之后才会存入索引数据。

索引Solr xml

Solr支持索引各种格式的结构化内容,结构化内容数据可以通过Solr XML格式导入Solr,通过Solr XML,solr索引工作者通常可以编码通过POST请求的形式直接去访问Solr的/update的方法将一定范围的内容写入Solr。

Solr的安装目录包example目录包含许多Solr XML格式文件,这些techproducts需特定的配置, bin/solr脚本包含支持配置,可通过bin/solr start –e 参数值,这种方式在启动solr的同时创建Collection

bin/post: 索引在example/exanplesdocs目录下的Solr XML文件:

测试命令:bin/post –c gettingstarted example/exampledocs/*.xml

将索引数据导入gettingstarted,现在可通过默认Solr Query语法进行搜索,注意你可以通过http://localhost:8983/solr/gettingstarted/browse

浏览页面显示的索引的文档尽管是粗糙、原型化、交互式的HTML视图,但是/browse UI展示Solr技术能力(/browse视图默认gettingstarted schema和数据格式默认结构化XML、JSON、CSV样例数据和非结构化rich数据,数据可能是首先不会非理想化显示,但是可以通过模板定制)

索引库数据视图

索引JSON:

Solr支持索引JSON数据:任意的结构化JSON或者类似Solr XML的“Solr JSON”,Solr example目录包含Solr Json测试文件,使用bin/post,建立JSON 文件索引:

bin/post -c gettingstarted example/exampledocs/books.json

windows命令:java -Durl=http://localhost:8080/solr/collection/update -jar post.jar *.json

为了扁平化(索引数据切割:类似Spark的RDD分割Partition)和索引任意的结构化JSON,可以查看ansforming and Indexing Custom JSON data.

索引CSV文件:

CSV文件是将数据导入Solr一个比较好的方式,特别是当文档是有相同一组的属性时,CSV可以很方便的从Excel或者从数据库(例如mysql)中导出。当SOlr启动时,可以很容易将结构化数据导出为CSV格式,然后将数据存入Solr,而不是需要额外的导入步骤

测试命令:bin/post -c gettingstarted example/exampledocs/books.csv

其他的索引管理技术:

  • 通过Data Import Handler (DIH).从数据库将数据导入Solr
  • 通过Solr的Java客户端SolrJ管理索引
  • 通过Admin UI导入:Documents选项卡

更新数据:

注意到即使索引这个指南中的内容超过1次,solr也不会出现重复的结果,因为schema.xml文件指定了名为“id”,“uniqueKey”域,无论什么时候使用POST命令以相同的uniqueKey提交文档,solr会自动提替换(类似Map属性,key相同的值总是会被最新的值替代),我们可以通过Solr Admin UI的Overview视图的num Docs和Max Doc属性验证这个过程:

Num Docs:表示可检索的文档数量(可能大于XML\JSON\CSV文件的总和,因为一些rich 文件可能包含多个文件:例如Work文档里面内嵌文档)

Max Docs:可能比Num Docs更大,因为Max Docs包含逻辑上已删除但是物理还未从索引删除的文档

注意:可能每次我们使用post命令重复提交索引,但是Num Docs并未增长,可能是uniquekey相同时新索引取代旧索引,造成索引内容可能改变但数量不变,可以通过提交同一个样本文件,但是每次提交前修改内容,通过相同的id查询会得到不同的结果

删除数据:

可通过更新URL通过提交delete命令,并且指定文档的uniquekey域或设置查询条件去删除索引数据 测试命令:

bin/post -c gettingstarted -d "<delete><id>SP2514N</id></delete>"

验证:通过Solr Admin UI的Query Tab q栏输入:id:”key”去验证索引数据是否真正删除

搜索:

Solr查询可通过REST客户端、CURL、wget、Chrome POSTMAN等方式,可以为许多编程语言提供类似本地客户端的体验,Solr Admin UI包含一个solr查询接口:可以看Sorl Admin UI的query Tab,如果不设置筛选条件点击“Execute Query“按钮,将会获取默认的10条JSON格式的索引记录

Solr查询表达式:”域名”:”域值”:*:*表示匹配所有的数据

Solr默认查询10条数据由“start,rows“栏的rows指定,提供分页效果

Solr Admin UI访问的URL在结果窗口的顶端呈现灰色的效果,点击之后将会显示Solr的响应数据,也可以使用curl命令行:

curl "http://localhost:8983/solr/gettingstarted/select?q=\*%3A*&wt=json&indent=true"

URL参数解释:

  • q:query:查询条件:URL-encod编码
  • wt:solr相应内容的输出格式
  • indent:内容是否切割:主要让solr响应内容格式化显示,否则非格式化显示,全部堆在一起不美观

查询基础:

  1. 单一条件限定查询 单一条件查询主要设置“q“参数,用实际的域值替换“:”,例如搜索“foundation”,使用curl指令:
curl http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=foundation

Solr页面显示:

  1. 短语搜索:通俗点就是关键字组合查询 测试案例:
curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=\"CAS+latency\""

Sor结果页面:

  1. 联合查询

默认使用多关键字或短语查询时,solr仅仅要求匹配的文档中存在,结果列表中包含关键字越多的信息按顺序显示,用户可以要求一个关键字以“+“或”-“作为前缀。查询的关键字包含“one”和“three”,可以通过“+”进行连接,但是URL中会使用URL Encoder进行转码传输 案例:

curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=%2Bone+%2Bthree"

更多的Solr的query可参考:https://cwiki.apache.org/confluence/display/solr/Searching

Solr Faceting:垂直搜索

Solr最受欢迎的功能是Faceting,Faceting运行搜索结果归档为子集/Buckets/Categories,并且提供每个子集的数量,Faceting的种类:filed values, numeric and date ranges, pivots (decision tree), and arbitrary query faceting.

Faceting: 对已经搜索出来的结果进一步的切分,例如汽车搜索,solr应该显示全部的包含汽车字样,但是可以通过faceting将汽车划分为卡车、轿车等类型,用户可以直接点击对应的汽车类型得到对应的结果,也可以查看卡车对应的数量统计等,Facating实际上相当于一个内容过滤的角色

Field facets

Solr可以提供搜索结果,Solr facets可以通过查询返回搜索文档的数量,每个文档在结果集包含唯一的关键字,在Solr Admin UI选项卡,可以选中“facet”复选框,可以看到和faceted相关的可选参数

分析:类似搜索“电脑”,solr返回电脑分类:例如联想商品数量:100,惠普电脑250情况,还可以通过时间等维度进行搜索

Range Facets:

对于数字和日期经常描述facet数据在某个范围,而不是分离实际值,通俗说就是在某个区间范围内搜索结果,例如淘宝的商品价格、日期等方位搜索

测试案例:

curl http://localhost:8983/solr/gettingstarted/select?q=*:*&wt=json&indent=on&rows=0&facet=true&facet.range=price&f.price.facet.range.start=0&f.price.facet.range.end=600&f.price.facet.range.gap=50&facet.range.other=after

Pivot Facets:

Priot Facets类似决策树,允许两个或以上的fields组合查询,测试案例

curl http://localhost:8983/solr/gettingstarted/select?q=*:*&rows=0&wt=json&indent=on&facet=on&facet.pivot=cat,inStock

结果说明:book类的关于Cat的书,仍在卖的有12本,没有在卖的有2本

Spatial

Solr支持位置限制支持,在指定的位置的距离范围内搜素,结果并按照距离排序,甚至可以通过距离改善结果,类似现在的LBS服务。测试数据目录:

example/exampledocs/*.xml,文件包含有表面Spatial能力表述的定位信息,运行测试,测试方法查看:techproducts example section,Spatial查询可以和其他类型的查询缓和使用,例如查询距离旧金山“ipod”的关键字: http://localhost:8983/solr/techproducts/browse?q=ipod&pt=37.7752%2C-122.4232&d=10&sfield=store&fq=%7B%21bbox%7D&queryOpts=spatial&queryOpts=spatial

Spatial:对匹配的结果进一步的筛选,结果更精确

总结:

通过Solr入门指南应了解:

  • 在SolrClund模式下启动Solr
  • 索引富文本文件/XML文件/JSON文件/CSV文件
  • 打开Solr Admin控制台,使用查询接口获取JSON个数的输出结果
  • 打开/browse接口以更加友好的方式和熟悉的接口展示Solr显示Solr的功能

下面是开始Solr入门指南的关键指令:linux/unix脚本

bin/solr start -e cloud -noprompt ;
  open http://localhost:8983/solr ;
  bin/post -c gettingstarted docs/ ;
  open http://localhost:8983/solr/gettingstarted/browse ;
  bin/post -c gettingstarted example/exampledocs/*.xml ;
  bin/post -c gettingstarted example/exampledocs/books.json ;
  bin/post -c gettingstarted example/exampledocs/books.csv ;
  bin/post -c gettingstarted -d "<delete><id>SP2514N</id></delete>" ;
  bin/solr healthcheck -c gettingstarted ;

注意:gettingstarted是solr core的名称需要手动创建然后导入

清理: 停止Solr和恢复Solr为初始状态,可使用下面的指令

bin/solr stop -all ;   //关闭solar
rm -Rf example/cloud/  /删除Solr的数据文件

© 著作权归作者所有

ZeroneLove
粉丝 6
博文 164
码字总数 133695
作品 0
深圳
高级程序员
私信 提问
Hibernate Search 5.5.1 发布

Hibernate Search 5.5.1 发布,更新内容: Bug 修复 * [HSEARCH-2010] - Error message incorrectly references @SortField instead of @SortableField * [HSEARCH-2019] - Build order of M......

淡漠悠然
2015/11/25
611
0
Hibernate OGM 5.0.0Beta1 发布,持久层框架

Hibernate OGM 5.0.0Beta1 发布,此版本更新内容如下: Bug 修复 * OGM-917 - mongodb - Embeddable key with single column not working with MongoDB ** 改进 * OGM-935 - core - Upgrade......

淡漠悠然
2015/12/21
1K
7
Apache Lucene 5.3.1 发布

Apache Lucene 5.3.1 发布,此版本包括各种 bug 修复和功能优化,现已提供下载: http://lucene.apache.org/core/mirrors-core-latest-redir.html 更新日志:https://lucene.apache.org/cor...

oschina
2015/09/25
2.5K
2
Apache Tapestry 5.3.1 发布

Apache Tapestry 5.3.1 发布,这是 5.3 的第一个修正版本,修复了一些Bug。发布说明:http://tapestry.apache.org/release-notes-531.html...

红薯
2011/12/26
1K
5
KDevelop 5.3.1 发布,跨平台 IDE

KDevelop 5.3.1 已发布,这是一个 bug 修复版本,没有引入新特性,建议目前使用 KDevelop 5.3.0 的用户升级。 KDevelop-Project 诞生于 1998 年,其目的是为 KDE 提供一个易用的 IDE,它支持...

王练
2018/12/22
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
4
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
9
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
7
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
8
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部