performance - 检索 Lucene 搜索返回的所有文档的某些字段的最佳方法

标签 performance search lucene field documents

我想知道检索 Lucene 搜索器返回的所有文档的某个字段的最佳方法是什么。

背景:每个文档都有一个日期字段(写在上面),我想显示所有找到的文档的时间线,因此我需要提取通过搜索找到的所有文档的日期(日)字段。

我目前使用 Searcher.doc(int, FieldSelector) 检索每个文档,其中选择器仅检索特定字段。

我已经索引了 250k 文档,搜索本身不需要时间并返回大约 10k 文档 ID。

但是检索这些内容需要 20 多秒。

我可以做些什么来加快速度,同时仍然获得我需要的所有值?

最佳答案

检索字段值的更好方法是使用 FieldCache。例如,如果字段值为字符串,则可以按如下方式检索值。

String[] fieldValues = FieldCache.DEFAULT.getStrings(indexReader, "FieldName")

顾名思义,这些值会被缓存。也就是说后续调用不需要时间。现在,您可以使用 lucene 文档 id 查找此数组,以检索给定文档的该字段的值。

关于performance - 检索 Lucene 搜索返回的所有文档的某些字段的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2511879/

相关文章:

Android - 在 XML(字符串数组)文件中搜索项目

lucene - 基于多个字段的 Solr/Lucene 拼写检查建议

python - 提高列表删除的时间效率

performance - hadoop大文件不拆分

elasticsearch - 如果是多重排序,Elastic Search的响应速度会变慢吗?[不是脚本排序]

Javascript 搜索和替换?

database - 是否有任何 nosql 数据库可以在 map/reduce 上进行搜索(例如 lucene)

java - 在 Lucene 中使用 WikipediaTokenizer 的示例

android - 如何在android后台运行一段代码?

ASP.NET 应用程序在 AWS EC2 t2.micro 上性能下降