加载lucene索引中的一个字段

发布于 2024-10-21 09:35:05 字数 168 浏览 4 评论 0原文


将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溇涏 2024-10-28 09:35:05

您可能需要首先解决为什么需要将字段加载到内存中?

您是否尝试过使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文