2011-04-05 49 views
0

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

回答

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 client

+2

是的,你必须搜索整个索引,但没有理由一旦你整理索引就返回整个索引。例如,在标准SQL中,查询'SELECT * FROM表ORDERBY字段ASC LIMIT 10'命令整个索引,但它只返回排序索引中的前10条记录。 – 2011-04-05 17:34:54