Solr初级教程

预览

本文档简要介绍如何运行solr,如何进行数据操做。html

环境

本教程使用solr 4.9,须要。。。
1. Java 1.7或者更高。 2. 下载solr,地址java

开始

解压solr压缩包,而且进入到"example"文件夹中。web

Solr能够在不少Java容器中运行,本教程使用jetty。sql

运行example文件夹中的start.jarjava -jar start.jar,就可使用jetty运行solr的war包,配置文件使用的是example中的configs。
上面的命令会启动jetty服务器,端口默认是8983,而且会将日志打印到控制台。
能够经过http://localhost:8983/solr/来打开solr的管理员页面。数据库

数据索引

Solr服务器已经起开了,可是没有任何数据。咱们能够经过post命令来向其中add(update、delete、pending adds and deletes)文档来修改solr的索引。实现的方式详情apache

exampledocs目录中包含了一些样例文件,这些文档能够经过命令post到solr中。在此咱们使用java -jar post.jar -h这种方式。json

java -jar post.jar solr.xml monitor.xml

如今Solr中索引了两篇文档,而且事物已经提交。咱们能够打开http://localhost:8983/solr/#/collection1/query这个连接,来进行实验,在"q"这个输入框中输入“solr”,点击“Excute Query”,浏览器会跳到http://localhost:8983/solr/collection1/select?q=solr&wt=xml页面。浏览器

咱们能够将全部的xml文档都添加到Solr中,java -jar post.jar *.xml服务器

如今咱们可使用Solr Query Syntax来查询数据。ide

还有不少种方式将数据导入到Solr中:
+ 经过Data Import Handler(DIH)从数据库中导入数据 + 加载CSV文件(文件中的数据用逗号分隔),csv文件能够是Excel和Mysql导出的。 + Post json文档+ 经过Solr Cell索引二进制文档,如word或者pdf。 + 经过java或者solr支持的其余语言,用程序建立并导入到solr中。

Update数据

咱们注意到即便solr.xml这个文档被导入了两次,可是咱们在搜索solr关键字时,仍旧获得一个结果。这是由于每一个文档都有一个惟一性的字段"id"。向solr中添加文档时,若是id相同,solr就会更新这篇文档。咱们能够经过http://localhost:8983/solr/#/collection1/plugins/core?entry=searcher这个页面中的numDocsmaxDoc来验证。

numDocs表明索引中的document的数目(这个数目可能比solr中xml文件的数目大,由于单个xml文件可能包含多个document)。numDocs可能比maxDocs还要大,由于某些文档可能被删除了,可是索引尚未更新。即便咱们屡次post同一份xml文件,numDocs也不会增长,由于id相同,solr作的是update动做。

编辑这些xml文件,修改其中的内容,而后从新运行java -jar post.jar命令,再进行搜索,咱们就能够看到刚才修改的内容。

Delete数据

咱们能够向solr post删除命令,若是指定了id就是删除某篇document;若是这个命令中的query能够匹配多个document,那就删除多个document(当心)。下面的命令会删除指定的document。

    java -Ddata=args -Dcommit=false -jar post.jar "<delete><id>SP2514N</id></delete>"

上面的命令,咱们指定了commit=false,因此咱们还可能会检索到刚刚删除的document,由于索引尚未更新。
经过statistics page这个updateHandler页面,咱们能够看到删除document生效的过程,deletesById这个值降为0,cumulative_deletesByIdautocommit这两个增长。

下面是使用query批量删除document的示例。

    java -Dcommit=false -Ddata=args -jar post.jar "<delete><query>name:DDR</query></delete>"

若是咱们想让以前的变化当即生效,咱们能够经过命令强制solr使用新的searcher:

    Java -jar post.jar -

如今,再次执行以前的query,能够发现已经删除的document,不会再被搜索出来了。咱们能够再次经过statistics page来看updateHandlercommit的个数,和searcher中的numDocs。

使用新的searcher,可能会花费很高的代价(时间、内存等),因此最好是积攒不少changes,而后批量提交给solr,再让solr重建索引。还有一个命令optimize,它和commit命令完成一样的操做,可是它会强制全部的索引分片都merge到同一个分片中,这样很耗费资源,但能提升检索速度,若是你的索引不常常变化,能够试试。

全部的update命令,均可以使用xmljson两个格式。

为了下面的教程,再把exampledocs文件夹中的xml文件,post到solr中。

    java -jar post.jar *.xml

query数据

继续阅读

相关文章
相关标签/搜索