0

有没有办法通过最好的N个结果来限制结果集?如果我使用Zend_Search_lucene::setResultSetLimit(10)我只会得到任何 10 个结果,而不是根据我的排序声明的 10 个最佳结果。

4

1 回答 1

0

出于您的目的,您不能使用

Zend_Search_lucene::setResultSetLimit(N)

因为它只给你前 N 个元素。

限制结果集

搜索中计算成本最高的部分是分数计算。大型结果集(数万次点击)可能需要几秒钟。

Zend_Search_Lucene 提供了使用 getResultSetLimit() 和 setResultSetLimit() 方法限制结果集大小的可能性:

  $currentResultSetLimit = Zend_Search_Lucene::getResultSetLimit();  
  Zend_Search_Lucene::setResultSetLimit($newLimit);

默认值 0 表示“无限制”。

它不会给出“最好的 N”个结果,而只会给出“第一个 N”个结果。

如何仅搜索 10 个结果并将其定义为最佳?您必须搜索整个索引以确定最佳结果。

默认情况下,搜索结果按分数排序。查看文档http://framework.zend.com/manual/1.11/en/zend.search.lucene.searching.html

顺便说一句,无论您使用 zend lucene 做什么,都可以考虑使用其他搜索引擎,例如Solr。我在许多项目中使用它,我建议使用它。管理起来更快更好。要在 zend 框架项目中使用它,您必须使用solr php 客户端

于 2011-04-05T17:30:32.127 回答