`
wx1569110409
  • 浏览: 20575 次
文章分类
社区版块
存档分类
最新评论

solr commit

 
阅读更多

背景

现有开源搜索引擎主要有es和solr;es更适合近实时查询,在批量文档更新插入时的查询效率依然很高;

solr在这方面要逊色一些,但是查询的稳定性更好,适合作为企业级搜索框架来使用。

关于solr在4 版本之后增加了,软提交,加快了index速度。

在solr 提交文档常用的主要分为soft commit 和 hard commit以及CommitWithin。

 

问题

网上solr入门大部分例子中 在添加文档时会有 add 以及commit

170635_47xn_3240397.png

这样做 在文档进行全量更新的时候 会很耗性能:log中会报错,如下:

170857_69sT_3240397.png

原因

主要的原因如下

如果每次添加文档都手动commit,会开一个新的searcher,而searcher是占内存的,不能开太多。配置文件里配置了searcher的上限,就会报“maxWarmingSearchers exceeded limit”;searcher的概念在后续文章会共享。

 

通过查看源码发现,add方法 已经把文档上传给solr服务端

170823_9c4G_3240397.png

那如果业务场景 不是很苛刻,就没有必要每次add时 手动commit了。solr也正好提供了soft commit的方式来解决。

hard commit机制

把内存中的索引文件同步到磁盘。可以实时查看到提交的文档。即使服务器挂了,也不影响这部分索引。

会开启一个新的searcher。很耗资源

 

soft commit机制

softCommit和NRTCachingDirectoryFactory关系紧密

用这种方式提交后也就是说原索引和现在的索引不同步,如果服务器挂了,那这部分索引就没了。

 

解决方案

 

如果需求是在提交后就能立马检索到,就要对每次增量的更新soft commit,定时或者定量去执行一次hard commit。operSearcher为true,要不如果读的是旧的缓存,那么新的文档是无法被检索到。

171913_rdOA_3240397.png

转载于:https://my.oschina.net/u/3240397/blog/831282

分享到:
评论

相关推荐

    SOLR的应用教程

    6.7 Updates and Commit Frequency Tradeoffs 6.8 Query Response Compression 6.9 Embedded vs HTTP Post 6.10 RAM Usage Considerations 6.10.1 OutOfMemoryErrors 6.10.2 Memory allocated to the Java VM **七...

    asp.net调用Solr

    ASP.NET调用Solr是一个常见的任务,特别是在构建高效的企业级搜索解决方案时。Solr是Apache Lucene项目的一个分支,是一个开源、高性能的全文搜索引擎。它提供了丰富的查询语法、高效的索引和检索能力,以及灵活的...

    SOLR的学习资料

    请求格式通常为`http://localhost:8983/solr/core_name/update?commit=true`,其中`core_name`是你的核心名,请求体包含JSON或XML格式的文档数据。 2. **删(Delete)**:同样通过HTTP API,可以删除单个文档或根据...

    Solr使用初探-1.0

    solr.commit(); ``` - 查询文档:使用 `query` 方法执行搜索查询。 ```java SolrQuery query = new SolrQuery("*:*"); query.setRows(10); QueryResponse response = solr.query(query); SolrDocumentList ...

    solr在java中使用总结

    solr.commit(); ``` - 查询示例代码(简化版): ```java SolrQuery query = new SolrQuery("*:*"); QueryResponse response = solr.query(query); SolrDocumentList results = response.getResults(); for ...

    配置了solr服务的tomcat

    solr.commit(); ``` - 查询文档: ```java SolrQuery query = new SolrQuery("title:Solr"); QueryResponse response = solr.query(query); List<SolrDocument> results = response.getResults(); for (Solr...

    solr环境搭建总结一

    3. **提交更改**: 添加或更新文档后,需调用`commit`方法使更改生效,`client.commit();` 4. **查询**: 通过`SolrQuery`构建查询,`SolrQuery query = new SolrQuery("query");`,然后使用`query.set("q", "query")...

    Solr学习笔记。。

    默认情况下,Solr将更改存储在内存中,直到接收到commit命令才会写入磁盘。可以设置`<autoCommit>`来控制自动提交的文档数和最大等待时间。 - `highlighting`:配置高亮显示,如更改默认的高亮标签`<em></em>`。 2...

    使用java实现solr-7.1.0的api和solr最新支持的sql查询

    client.commit(); ``` 对于查询操作,你可以使用`SolrQuery`类来构造查询条件,然后调用`query()`方法执行查询: ```java SolrQuery query = new SolrQuery(); query.setQuery("title:solr"); QueryResponse ...

    solr教材-PDF版

    - **6.7 Updates and Commit Frequency Tradeoffs**:更新频率与提交频率之间的权衡。 - **6.8 Query Response Compression**:启用查询响应压缩以减少网络传输开销。 - **6.9 Embedded vs HTTP Post**:对比嵌入式...

    solr安装资源

    同时,Solr提供了Tlog(事务日志)和ZK-based Commit Points机制,保证数据的一致性。 8. **监控与性能调优**:Solr提供了监控接口,可以通过JMX或Solr的Admin UI查看系统状态、统计信息和查询性能。通过对索引结构...

    solr开发详解

    solr.commit(); // 执行搜索 SolrQuery query = new SolrQuery("*:*"); query.setRows(10); QueryResponse response = solr.query(query); // 处理搜索结果 for (SolrDocument document : response.get...

    solr新版参考手册(apache-solr-ref-guide-4.4)

    在索引和基本数据操作章节中,手册详细描述了索引过程和基本索引操作,比如提交(commit)、优化(optimize)和回滚(rollback)。这些操作对于管理Solr中的数据集和维持搜索索引的健康状态是非常重要的。对于希望...

    solr 配置 以及建立索引

    <str name="replicateAfter">commit <str name="replicateAfter">startup <str name="confFiles">schema.xml,stopwords.txt ``` - **从服务器配置**:在从服务器(如`tomcat1`和`tomcat2`)的SolrHome目录...

    简单java实现的solr以及redis小demo

    solrServer.commit(); // 提交更改 SolrQuery query = new SolrQuery("searchTerm"); SolrResponse response = solrServer.query(query); ``` 接下来,我们转向Redis。Redis以其高速度和丰富的数据结构(如字符串、...

    solr创建索引并查询

    ### Solr创建索引并查询的关键知识点 #### 一、Solr简介 Apache Solr是一款开源的全文搜索引擎平台,基于Lucene实现。它提供了一套完整的搜索解决方案,并且支持多种高级特性,如高亮显示、分面搜索、地理位置搜索...

    solr4.1安装配置

    client.commit(); // 查询操作... client.close(); } } ``` - 这段代码创建了一个文档并将其添加到索引,然后提交更改。 总结,本文详细介绍了如何在Windows 7环境下安装配置Solr 4.1,包括JDK和Tomcat的...

    solr连接数据库配置

    Solr 是一个流行的开源全文搜索引擎,它允许开发者通过配置来实现高效的搜索功能。在Solr中,连接数据库是一项重要的配置,这使得我们可以将数据库中的数据导入到Solr中,以便进行快速检索。这篇博客“solr连接...

    solr_api

    例如,使用POST请求将JSON格式的文档提交到`http://localhost:8983/solr/collection1/update?commit=true`,其中`collection1`是索引库名。 - **删除文档**:同样使用`/update`接口,通过指定文档ID来删除文档。...

    php 扩展 -- solr-1.0.1

    使用`SolrClient`类创建客户端实例,通过`addDocument()`, `commit()`, `search()`等方法进行索引管理和查询操作。 总的来说,安装PHP扩展Solr-1.0.1涉及多个步骤,包括系统环境的准备、源码的获取与编译,以及最后...

Global site tag (gtag.js) - Google Analytics