【问题标题】:lucene indexSearch.search performancelucene indexSearch.search 性能
【发布时间】:2013-05-24 10:33:49
【问题描述】:

我正在使用 lucene4.2 并且有一个索引,其文档有超过 50 个字段。 该索引包含大约 80 mio。文件,大小为 11.5 GB。 每次查询超过 20 秒。 像这样:

//Query: +(id:[3000000000000000000 TO 9000000000000000000]) +(devId:2 devId:3)
long start = System.currentTimeMillis();
TopDocs topDocs = indexSearch.search(query,1000);
long end = System.currentTimeMillis();
logger.info(end - start);

当 JVM 堆大小小于 1024M 时会导致 OutOfMemoryError。 我真的很困惑为什么它需要这么多的内存和时间。 怎么做才能在 1 秒内完成搜索?

【问题讨论】:

  • 您是如何创建索引的? 80 米。文件是 80、000、000 个文件?如果是这样,1G内存可能不够用。
  • 3 quintillion 到 9 quintillion 是一个相当大的范围,我认为会找到很多命中。如果你缩小这个范围,你会看到同样的问题吗?
  • 这是我的参数。mergeFactor 100 useCompoundFile false OPenMode.CREATE_OR_APPEND。你的意思是拆分成多个索引会更快? id 不是自动递增的,它是通过当前时间计算的。
  • 是的,我缩小了范围,但没有减少搜索时间。

标签: java performance search lucene out-of-memory


【解决方案1】:

您是如何创建文档字段的?你存储了所有字段吗?

可能是你存储的字段很大

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2013-09-26
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多