Solr之维护索引。

        在一般系统中维护的都是增删改,在Solr中的维护功能是增删和优化功能,在Solr中的维护功能是增删和优化功能,在Solr中的修改操作就是先删掉再添加,在做索引维护之前,首先要做的是配置schema.xml主要是设置好字段信息(名称,类型,索引,存储,分词等信息),大概就像在数据库中新建一个表一样,设置好schema.xml就可以进行索引相关操作了。

增加索引

        在增加索引之前先科构建好SolrInputDocument对象,主要操作就是给文档添加字段和值,代码如下:

SolrInputDocument doc = new SolrInputDocument();

doc.setField("id" , "ABC");

doc.setField("content" , "中华人民共和国");

        构建好文档后添加的上面初始化好的server里就行了。

server.add(doc);

server.commit(); // 这句一般不用加,因为我们可以通过在配置文件中的autoCommit来提高性能

         Solr在add文档时,如果文档不存在就直接添加,如果文档存在就删除后添加,这也就是修改功能了,判断文档是否存在的依据是定义好的uniqueKey字段。

删除索引

        删除指定有两种:

  • 通过文档ID进行删除,用<id></id>包装:

id值是在schema.xml的uniqueKey所指字段的值,而不是索引内部的docId。

  • 通过查询到的结果进行删除,用<query></query>包装:

query值是查询串,如:title:"solr"。

  • 方式1:url删除,使用stream相关参数。

http://localhost:8080/solr/db/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&stream.contentType=text/xml;charset=utf-8&commit=true

  • stream相关参数还有:
    • stream.file = (服务器本地文件)
    • stream.url分别指到你的删除文本。
  • 这里是直接字符串内容用stream.body参数。
  • commit参数是指提交,提交了才能看到删除效果。
  • 方式2:使用post.jar删除

删除id为3的doc

java -Ddata=args-Durl=http://localhost:8080/solr/libDirTest/update-jar post.jar

"<delete><id>3</id></delete>"

删除所有

java -Ddata=args-Durl=http://localhost:8080/solr/libDirTest/update-jar post.jar

"<delete><query>*:*</query></delete>"

  • 方式3:solrj

通过ID删除方式代码:

server.deleteById(id);

// 或是使用批量删除

server.deleteById(ids);

通过查询删除方式代码:

server.deleteByQuery("*.*"); // 这样就删除了所有文档索引,“*.*”就查询所有内容的

优化索引

        优化Lucene的索引文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常的运行。优化是一个耗时较多的过程。

server.optimize(); // 不要频繁的调用,尽量在无人使用时调用


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值