Solr初级教程

预览

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

环境

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

开始

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

Solr可以在很多Java容器中运行,本教程使用jetty。

运行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的索引。实现的方式详情

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

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来查询数据。

还有很多种方式将数据导入到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数据

继续阅读


转载于:https://my.oschina.net/u/147181/blog/290518

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值