- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Lucence 4.7.2,并且是新的。我尝试查看 lucene 源代码,但无法找到信息。使用近实时的原因是,在搜索时索引应该在创建后 1 分钟内可见。
我创建了以下尝试实现/使用 lucene NRT(近实时)功能。
//Code to initialize IndexWriter and Near real-time IndexReader.
//(DirectoryReader is used as IndexReader(IndexWriter, boolean) contructor is deprecated.
directory = FSDirectory.open(new File("C:/Users/arun/lucene-home/"));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47);
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_47, analyzer);
IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig);
//NOTE 1
DirectoryReader directoryReader = DirectoryReader.open(indexWriter, true);
每次执行搜索之前,我都会创建 IndexSearcher 如下
DirectoryReader newDirectoryReader = DirectoryReader.openIfChanged(directoryReader , indexWriter, true);
IndexSearcher nrtIndexSearcher = new IndexSearcher(newDirectoryreader);
问题:
上述代码中注释“NOTE 1”的原始DirectoryReader“directoryReader”会被lucene本身关闭吗?我的意思是 DirectoryReader 实现或其中使用的类?
如果不是,如何跟踪在关闭 DirectoryReader 之前是否仍在引用从 DirectoryReader 创建的 IndexSearcher。
注意:我将无法使用 Solr,请原谅。
最佳答案
每个IndexReader
在使用后都必须关闭,否则你最终会得到"Too many open files"异常。
如果您使用openIfChanged
,您可以检查引用相等性以查看阅读器是否不同:
DirectoryReader oldReader = directoryReader;
DirectoryReader newReader = DirectoryReader.openIfChanged(directoryReader);
if ((newReader != null) & (oldReader != newReader)) {
directoryReader = newReader;
oldReader.close();
// need to close the old one
} else {
// nothing to do
}
注意:如果您在多线程环境中使用此功能,则旧的阅读器有可能仍在使用中 - 因此,如果您过早关闭它,则使用旧的阅读器(搜索器,使用此阅读器创建的搜索器)进行搜索将失败。解决这个问题的方法是 NRTManager
和/或 SearcherManager
。
关于java - 使用 Lucene 近实时索引功能时是否需要关闭 DirectoryReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24386554/
好吧,假设我有一堆光盘放在已知固定位置的飞机上。每个圆盘的半径为 1 个单位。该平面完全被一组圆盘覆盖,事实上,它被一组圆盘广泛覆盖,在某些区域覆盖了一两个数量级。我想找到仍然完全覆盖飞机的光盘子集。
我有一个涉及大量相关表的系统。考虑一个标准的类别/产品/订单/客户/订单项目场景。有些表是自引用的(如类别)。这些表都不是特别大(大约 10 万行,估计规模约为 100 万行)。我需要考虑这些数据的很
我正在学习 https://near.academy/near101/chapter-6 中的教程 其中一个步骤是运行此命令(但使用我的帐户): near call museum.testnet ad
我正在启动一个分析项目,该项目将处理数百万地理定位数据。数据可能是这样的: 编号{ 用户身份, 长, 纬度, 时间, 应用ID } 我的主要操作: 获取区域中包含的所有数据 找到属于某个userId的
在性能方面,JSON 解析需要大量时间来检索数据。在我的应用程序中,我需要从服务器获取近 10,000 条记录。在模拟器上,它立即获取数据并高效工作。但在我的 android 手机中,它需要超过2 分
任何人都可以帮助我从投影矩阵 44 获得左、右、下、上、近和远边界值吗? 最佳答案 这里是方程组的分辨率 Christian Rau引用: 对于正交矩阵: near = (1+m34)/m33;
我正在通过后台线程将 1,00,000 条记录插入到数据库中。此时,当我想要加载 Ui 屏幕时,出现内存不足错误。例如,当堆大小为 5 MB 且分配给后台线程的内存为 4 MB 时,加载 UI 屏幕需
C++如何存储近100000位的海量数字?.. 我试过使用 long long int 和 long double int..对我没有任何作用.. 有没有其他方法可以存储这么大的数字? 我希望找到大于
我是一名优秀的程序员,十分优秀!