背景: solr作为搜索工具,索引采用传统的lucene构建,当更新索引文件的时候,搜索并不会出现更新
solr确实做了精细的缓存机制,缓存跟一个特定的searcher绑定,与普通的缓存相比,solr的缓存并不会在一段时间之后失效,除非searcher发生改变
当你将solr集成到你的应用,而非采用solr服务器方式的时候,此时会带来麻烦,你不得不自己编写代码解决
通过分析solr自带的readercycle脚本和SolrUpdateServlet,你就会容易的找到答案
代码如下:
legacyUpdateHandler=newXmlUpdateRequestHandler();
legacyUpdateHandler.init(null);
BufferedReaderrequestReader=newBufferedReader(newStringReader("<commit/>"));
legacyUpdateHandler.update(requestReader);
当你跟新了索引文件,然后再调用此段代码,你会发现类似结果
2008-4-231:28:12org.apache.solr.update.DirectUpdateHandler2commit
信息:startcommit(optimize=false,waitFlush=false,waitSearcher=true)
2008-4-231:28:12org.apache.solr.search.SolrIndexSearcher<init>
信息:OpeningSearcher@1474fcmain
2008-4-231:28:12org.apache.solr.update.DirectUpdateHandler2commit
信息:end_commit_flush
2008-4-231:28:12org.apache.solr.search.SolrIndexSearcherwarm
信息:autowarmingSearcher@1474fcmainfromSearcher@c550main
filterCache{lookups=0,hits=0,hitratio=0.00,inserts=1,evictions=0,size=1,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=1,cumulative_evictions=0}
2008-4-231:28:12org.apache.solr.search.SolrIndexSearcherwarm
信息:autowarmingresultforSearcher@1474fcmain
filterCache{lookups=0,hits=0,hitratio=0.00,inserts=1,evictions=0,size=1,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=1,cumulative_evictions=0}
2008-4-231:28:12org.apache.solr.search.SolrIndexSearcherwarm
信息:autowarmingSearcher@1474fcmainfromSearcher@c550main
queryResultCache{lookups=1,hits=0,hitratio=0.00,inserts=1,evictions=0,size=1,cumulative_lookups=1,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=1,cumulative_evictions=0}
2008-4-231:28:12org.apache.solr.search.SolrIndexSearcherwarm
信息:autowarmingresultforSearcher@1474fcmain
queryResultCache{lookups=0,hits=0,hitratio=0.00,inserts=1,evictions=0,size=1,cumulative_lookups=1,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=1,cumulative_evictions=0}
2008-4-231:28:12org.apache.solr.search.SolrIndexSearcherwarm
信息:autowarmingSearcher@1474fcmainfromSearcher@c550main
documentCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
2008-4-231:28:12org.apache.solr.search.SolrIndexSearcherwarm
信息:autowarmingresultforSearcher@1474fcmain
documentCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
2008-4-231:28:12org.apache.solr.core.SolrCoreregisterSearcher
信息:RegisterednewsearcherSearcher@1474fcmain
2008-4-231:28:12org.apache.solr.handler.XmlUpdateRequestHandlerupdate
信息:commit09
从日志看出,searcher的确换了新的
此后你再重新搜索,结果果然更新了
分享到:
相关推荐
- **Update Handler**:Solr提供了多种Update Handler,例如Direct Update Handler和Document Update Handler,它们接收单个文档或者批量文档的更新请求,然后进行相应的索引更新,而无需重新构建整个索引。...
为何矮人自定义搜寻器和自动Solr索引更新器危险代码:目前未经过消毒的输入要求: crawler_lists必须可写crawler_json必须可写编辑config / config.php以获取Solr设置和抓取延迟使用表单来设置您的爬网参数。...
最后,我们需要定义索引更新策略,例如全量索引或增量索引。 测试结果 在本文中,我们使用 Solr 3.6.2 版本,在 Linux 5.2 操作系统上进行测试。我们使用 Oracle 10g 数据库作为数据源,并使用 DIH 和 Delta-...
#### 三、Solr索引创建的XML语法示例 ```xml <field name="id">222 ``` 此XML片段展示了如何使用`<add>`标签创建一个包含单个字段的新文档。`boost`属性表示该文档的重要性权重。 #### 四、总结 通过对...
Solr 索引 测试报告 性能
总的来说,使用XML更新Solr索引是一种强大的方法,它允许精确控制索引的内容和结构,同时提供了灵活性来调整文档的相关性和索引性能。确保在`schema.xml`中正确配置了字段类型和设置,以支持所需的更新操作,并且要...
在Solr中,定时更新主要通过DataImportHandler(DIH)实现,这是一个用于将结构化数据导入到Solr索引中的内置工具。DIH支持多种数据源,如关系型数据库、CSV文件等,并提供了全量导入和增量导入两种方式。全量导入会...
### Solr创建索引并查询的关键知识点 #### 一、Solr简介 Apache Solr是一款开源的全文搜索引擎平台,基于Lucene实现。它提供了一套完整的搜索解决方案,并且支持多种高级特性,如高亮显示、分面搜索、地理位置搜索...
这样,业务层可以通过调用这些接口,实现远程对Solr索引的查询操作,无需关心底层实现的细节。 MySQL作为关系型数据库,负责存储系统的基础数据和元数据。在索引过程中,可能会涉及到对原始数据的存储和查询,MySQL...
3. **命令行工具**:如`post.jar`,用于批量导入数据到Solr索引。 4. **API支持**:Solr提供了RESTful API,支持通过HTTP协议进行操作,便于各种编程语言的集成。 四、实践应用 在实际项目中,MySearch可能是一个...
- 使用`<dataConfig>`标签定义数据导入处理器(DIH,DataImportHandler),它可以读取文件夹内容并将其导入到Solr索引中。 - 创建一个`data-config.xml`文件,在其中定义数据源和查询语句,以遍历文件夹并读取文件...
本篇文章将深入探讨如何在Solr中配置中文解析器以及在导入数据到Solr索引库时所需关注的jar包。 首先,让我们来了解Solr中的中文解析器。在Solr中,解析器是处理文本输入的关键组件,它负责将原始文本转化为可搜索...
主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询
1. **全量导入**:全量导入是将所有数据从源数据库或文件一次性导入到Solr索引的过程。这通常在系统初始化或者数据大幅度变动时进行。 2. **增量导入**:增量导入只导入自上次导入以来发生变化的数据。Solr通过跟踪...
Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...
在本篇博文中,我们将探讨基于Apache Solr构建的网站索引架构,这是搜索引擎技术中的一个关键组件。Solr是一个开源、高性能的全文检索服务,它允许开发者为大量数据建立索引,从而实现快速的搜索功能。在"基于solr的...
增量索引:增量索引是指只对自上次索引以来发生变化的数据进行索引更新。这种方式适用于数据频繁更新但整体变化不大的情况,可以有效减少索引过程的时间和资源消耗。在Solr中,通常会配合数据导入工具...
solr定时增量更新索引所需jar包包括:solr-dataimporthandler-4.0.0.jar、solr-dataimportscheduler.jar(6.x适用)、solr-dataimporthandler-extras-4.0.0.jar。