加载lucene索引中的一个字段
将 lucene 索引字段的所有值加载到内存中的最快方法是什么, 我有很大的 lucene 索引(1.6 GB),我需要以最少的内存开销将所有(ID)字段加载到内存中,当我迭代所有项目并读取该字段时,我收到 OutOfMemoryException(这也非常慢)为了加载索引字段,我需要一个性能更好的解决方案)。
Whats the fastest way to loading all of the values of a lucene index field in memory,
I have large lucene index (1.6 GB) i need to load all of the (ID) field into memory with least overhead on memory I'm getting OutOfMemoryException when i iterate through all of the items and read that field (this is also very slow for loading field of index i need a solution with better performance).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能需要首先解决为什么需要将字段加载到内存中?
您是否尝试过使用 TermQuery 进行搜索 和一个仅包含您要加载的字段的术语?例如新术语(“ID”)。
然后,您不需要将所有值加载到内存中来迭代它们。相反,使用 FieldSelector确保加载每个搜索结果时仅加载单个字段。
否则,使用 Lucene 的 FieldCache获取所有 ID 字段的值。
You may need to address why you need to load of your Fields into memory in the first place?
Have you tried doing a search using a TermQuery and a Term that simply contains the field you want to load? e.g. new Term("ID").
You then wont need to load all values into memory to iterate over them. Instead, use a FieldSelector to ensure only a single field is loaded when you load each search result.
Otherwise, use Lucene's FieldCache to get the values for all your ID fields.