Java 当条款数量增加时,Lucene变得越来越慢?

Java 当条款数量增加时,Lucene变得越来越慢?,java,lucene,Java,Lucene,我们有一个50Gb的Lucene索引(机器上有4GB的RAM)。用一个术语搜索需要100毫秒。有两个术语-200ms,有三个术语-300ms,等等 这是预期的性能下降还是我们做错了什么?搜索k个不同术语的查询需要获取与它们对应的k个帖子列表,然后计算它们的并集。一般来说,这将在术语数量上花费线性时间。搜索k个不同术语的查询需要获取与它们对应的k个帖子列表,然后计算它们的并集。一般来说,这将需要线性的术语数量。您所说的搜索是什么意思?这包括排序和检索结果吗?我的意思是调用org.apache.lu

我们有一个50Gb的Lucene索引(机器上有4GB的RAM)。用一个术语搜索需要100毫秒。有两个术语-200ms,有三个术语-300ms,等等


这是预期的性能下降还是我们做错了什么?

搜索k个不同术语的查询需要获取与它们对应的k个帖子列表,然后计算它们的并集。一般来说,这将在术语数量上花费线性时间。

搜索k个不同术语的查询需要获取与它们对应的k个帖子列表,然后计算它们的并集。一般来说,这将需要线性的术语数量。

您所说的搜索是什么意思?这包括排序和检索结果吗?我的意思是调用
org.apache.lucene.search.indexsearch#search(查询,收集器)
。当查询包含更多术语时,此特定调用将花费更长的时间。对k个不同术语的查询进行搜索涉及获取与其对应的k个过账列表,然后计算这些列表的并集。时间的线性增长并不令人惊讶。考虑到索引有多大,您可以通过切换到具有更多RAM的机器或为JVM提供更少内存(如果可能)来获得更好的性能。您所说的搜索是什么意思?这包括排序和检索结果吗?我的意思是调用
org.apache.lucene.search.indexsearch#search(查询,收集器)
。当查询包含更多术语时,此特定调用将花费更长的时间。对k个不同术语的查询进行搜索涉及获取与其对应的k个过账列表,然后计算这些列表的并集。时间的线性增长并不令人惊讶。考虑到索引有多大,您可以通过切换到具有更多RAM的机器或为JVM提供更少内存(如果可能)来获得更好的性能