Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Lucene搜索多少个结果?_Java_Lucene - Fatal编程技术网

Java 使用Lucene搜索多少个结果?

Java 使用Lucene搜索多少个结果?,java,lucene,Java,Lucene,在我的应用程序中,我使用Lucene(4.8)作为搜索引擎 我使用IndexSearcher确定10个文档ID,然后从数据库中加载完整的10个文档。使用以下方法时,我的问题是:n应该有多大? search(Query query, Filter filter, int n, Sort sort) 该应用程序还支持分页,因此理论上n可以是Integer.MAX_值,在搜索之后,我确定我想要的10个docid,依此类推 但这是个好办法吗? 我的意思是,如果有可能指定一个偏移量,我可以在这一步中进行

在我的应用程序中,我使用Lucene(4.8)作为搜索引擎

我使用IndexSearcher确定10个文档ID,然后从数据库中加载完整的10个文档。使用以下方法时,我的问题是:n应该有多大?

search(Query query, Filter filter, int n, Sort sort)
该应用程序还支持分页,因此理论上n可以是Integer.MAX_值,在搜索之后,我确定我想要的10个docid,依此类推

但这是个好办法吗?

我的意思是,如果有可能指定一个偏移量,我可以在这一步中进行分页,并在获得10个文档后结束搜索过程

最后:如果只搜索10而不是Integer.MAX\u VALUE文档,会不会大大加快速度?

search(Query query, Filter filter, int n, Sort sort)

另外,我不能单独测试最后一个问题,因为我的数据库没有那么大,看不出有什么不同。。。但当它处于活动状态时,它会更大。

首先,即使您指定了
Integer.MAX_VALUE
,它也会向下舍入到MAX doc id-在最大绝对限制之上没有任何搜索点

关于加速-没有人会给你精确的答案,因为每个指标都是不同的。但也有一些共同点

  • 对于每个搜索,都会为结果分配新的
    对象[size]
    org.apache.lucene.util.PriorityQueue:64
    -这是lucene 4.9.0版,行号可能因版本而异)
  • org.apache.lucene.search.indexsearch:467
    还有另一个分配,其中
    ScoreDoc
    数组用(相同?)号初始化
  • 显然,设置每个数组元素都需要CPU和I/O成本
即使初始化这些搜索结果中的每一个都很便宜,但对于大的索引来说,它会累加起来。此外,这些大块垃圾的收集也是有代价的。想象一下,如果您每秒运行10次搜索,并获得100万个搜索结果。这对GC来说是一个很大的工作!因此,如果你能做些什么来修剪搜索结果,那就去做吧


然而,上述建议(以及任何其他建议)仅在您的上下文之外有意义。测量,不要猜!修剪是一种优化,可以留待以后进行——如果您负担得起的话。

首先,即使您指定了
Integer.MAX_VALUE
,它也会被舍入到最大文档id——在最大绝对限制之上没有任何搜索点

关于加速-没有人会给你精确的答案,因为每个指标都是不同的。但也有一些共同点

  • 对于每个搜索,都会为结果分配新的
    对象[size]
    org.apache.lucene.util.PriorityQueue:64
    -这是lucene 4.9.0版,行号可能因版本而异)
  • org.apache.lucene.search.indexsearch:467
    还有另一个分配,其中
    ScoreDoc
    数组用(相同?)号初始化
  • 显然,设置每个数组元素都需要CPU和I/O成本
即使初始化这些搜索结果中的每一个都很便宜,但对于大的索引来说,它会累加起来。此外,这些大块垃圾的收集也是有代价的。想象一下,如果您每秒运行10次搜索,并获得100万个搜索结果。这对GC来说是一个很大的工作!因此,如果你能做些什么来修剪搜索结果,那就去做吧


然而,上述建议(以及任何其他建议)仅在您的上下文之外有意义。测量,不要猜!修剪是一种优化,可以留待以后进行——如果您负担得起的话。

首先,即使您指定了
Integer.MAX_VALUE
,它也会被舍入到最大文档id——在最大绝对限制之上没有任何搜索点

关于加速-没有人会给你精确的答案,因为每个指标都是不同的。但也有一些共同点

  • 对于每个搜索,都会为结果分配新的
    对象[size]
    org.apache.lucene.util.PriorityQueue:64
    -这是lucene 4.9.0版,行号可能因版本而异)
  • org.apache.lucene.search.indexsearch:467
    还有另一个分配,其中
    ScoreDoc
    数组用(相同?)号初始化
  • 显然,设置每个数组元素都需要CPU和I/O成本
即使初始化这些搜索结果中的每一个都很便宜,但对于大的索引来说,它会累加起来。此外,这些大块垃圾的收集也是有代价的。想象一下,如果您每秒运行10次搜索,并获得100万个搜索结果。这对GC来说是一个很大的工作!因此,如果你能做些什么来修剪搜索结果,那就去做吧


然而,上述建议(以及任何其他建议)仅在您的上下文之外有意义。测量,不要猜!修剪是一种优化,可以留待以后进行——如果您负担得起的话。

首先,即使您指定了
Integer.MAX_VALUE
,它也会被舍入到最大文档id——在最大绝对限制之上没有任何搜索点

关于加速-没有人会给你精确的答案,因为每个指标都是不同的。但也有一些共同点

  • 对于每个搜索,都会为结果分配新的
    对象[size]
    org.apache.lucene.util.PriorityQueue:64
    -这是lucene 4.9.0版,行号可能因版本而异)
  • org.apache.lucene.search.indexsearch:467
    还有另一个分配,其中
    ScoreDoc
    数组用(相同?)号初始化
  • 显然,设置每个数组元素都需要CPU和I/O成本
即使初始化这些搜索结果中的每一个都很便宜,但对于大的索引来说,它会累加起来。此外,这些大块垃圾的收集也是有代价的。想象一下,如果你在跑步