栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

具有频繁更新索引的FieldCache

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

具有频繁更新索引的FieldCache

FieldCache使用弱引用来索引阅读器,作为其缓存的键。(通过调用

IndexReader.GetCacheKey
已未过时。)的标准调用
IndexReader.Open
一个
FSDirectory
会用读者的一个游泳池,一个为每个段。

您应该始终将最里面的读取器传递给FieldCache。签出

ReaderUtil
一些帮助者的资料,以检索其中包含文档的个人阅读器。文档ID不会在段中更改,将其描述为不可预测/易变的含义是在两次索引提交之间更改。可以对删除的文档进行验证,对段进行合并以及执行此类操作。

提交需要从磁盘中删除该段(合并/优化),这意味着新的读取器将没有池化段读取器,并且在关闭所有较旧的读取器后,垃圾回收会将其删除。

永远不要打电话

FieldCache.PurgeAllCaches()
。它仅用于测试,而不是用于生产。

新增2011-04-03; 使用子阅读器的示例代码。

var directory = FSDirectory.Open(new DirectoryInfo("index"));var reader = IndexReader.Open(directory, readOnly: true);var documentId = 1337;// Grab all subreaders.var subReaders = new List<IndexReader>();ReaderUtil.GatherSubReaders(subReaders, reader);// Loop through all subreaders. While subReaderId is higher than the// maximum document id in the subreader, go to next.var subReaderId = documentId;var subReader = subReaders.First(sub => {    if (sub.MaxDoc() < subReaderId) {        subReaderId -= sub.MaxDoc();        return false;    }    return true;});var values = FieldCache_Fields.DEFAULT.GetInts(subReader, "newsdate");var value = values[subReaderId];


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号