下载 solr 5.3.1
wget http://archive.apache.org/dist/lucene/solr/5.3.1/solr-5.3.1.zip
unzip solr-5.3.1.zip
cd solr-5.3.1/
bin/solr start -e cloud -noprompt
这时就把 solr 给启动了,如果看到如下提示
NOTE: Please install lsof as this script needs it to determine if Solr is listening on port 8983.
那么就安装一下 lsof
现在再启动 solr 就不会提示安装 lsof 了
solr 安装成功后,bin/post 工具可以将不同类型的文档导入 solr,现在尝试将 docs 目录下的所有 html 文件导入 solr 并创建索引
bin/post -c gettingstarted docs/
# -c gettingstarted: 指定需要创建索引的集合(collection)为gettingstarted
# docs/: 指定一个相对路径
solr 支持对多种格式的结构化数据进行索引,例如:solr xml(传说是某种主流的格式)
solr 安装包含了少量的 solr xml 格式的文件,附带示例数据(主要是些 mocked 科技产品数据),可以使用下面的命令启动 solr 并且索引这些数据
使用 post 工具,将 example/exampledocs/ 下的 solr xml 格式的示例数据索引
看过了 solr xml 格式,再来看看 json。貌似更主流一些吧
solr 安装也包含了 json 格式数据(solr json,是类似于 solr xml 的 json,大概是 json 的字段都是定义好的),用来演示对 json 的支持,依然使用 post 工具
把数据导入 solr 的一个方式是经由 csv;照例是使用 post 工具,如下
即使索引同一份数据多次,也不会搜索出重复的结果来。这是因为在 schema.xml 中指定了一个唯一键:id
无论何时,向 solr 发起指令去添加一个已存在的、唯一键相同的文档,solr 会自动替换该文档
numDocs:可搜索的文档数,这个数字可能比 xml,json,csv 文件数要大,这是因为单个文件里可能有多个文档,多次提交同一个文档,numDocs 并不会增加
maxDoc:这个值包含了逻辑上已删除但还没有物理删除的文档,所以该值可能比 numDosc 大
使用 post 工具来删除数据:提交一个删除命令,指定将要被删除的文档的唯一键的值;或者一个查询,匹配多个结果
可以用:来代替.,避免进行 url encode
界面
参数说明(搜索语法)(搜索参数)
q:搜索关键字,如果关键字是个短语的话需要用引号,例如q="CAS latency",注意:空格会被 url encode 编码成+号
field:value格式,表示仅在 filed 字段里搜索 value,例如 q=name:foundation 指定只搜索name 字段里的 foundation
price:[0 TO 400],范围搜索,表示搜索 price 在 0 和 400 之间,注意:TO 要大写
默认情况下,搜索多个关键字,使用空格分隔,solr 只需要其中一个包含在文档中,如果需要多个关键字都包含,可以用+号,反之用-号,注意:+号会被 url encode 编码成 %2B。示例:
q=+one +three 表示文档里同时包含 one 和 three
q=+two -one 表示文档里包含 two 但不包含 one
搜索结果
faceting 是 solr 最受欢迎的特性之一,它可以将搜索结果分组到子集中,并对每个子集进行汇总。有多种 faceting:字段值,数字和日期范围,决策树,及任意查询 faceting
除了搜索结果以外,solr查询还能返回包含每个唯一值的文档数
勾选 faceting(facet=true),指定用于 facet 的字段(facet.field=?),如果只想 facets 而不需要返回内容,设定 rows=0
对于数字和日期,经常需要按范围进行汇总,一个数字范围的 facets 如下:
使用 price 来 facets
决策树 facet... 允许 2 个或更多字段被嵌入各种可能的组合
在示例的“科技产品数据”里,pivot facets 可以用来查看 book 类别(字段为 cat)下有多少产品有库存或无库存,下面看看查询语句
查询结果,仅截取 cat=book 的片段
这个结果说明 cat=book 的产品有 14 个,其中有库存的 12 个,无库存的 2 个
https://cwiki.apache.org/confluence/display/solr/Faceting
solr 支持地理空间搜索,包括对给定的地点进行指定距离的范围搜索,按距离排序,......
spatial 查询可以和任何类型的查询结合,例如,在深圳市 10km 内查询 ipod
一个包含了上面各步骤命令的shell脚本
清理脚本
Solr Reference Guide
参考指南下载目录
参考指南(pdf) for 5.3