Zend_Search_Lucene限制结果集
问题描述:
有没有办法将结果集限制为最好的N结果?如果我使用Zend_Search_lucene::setResultSetLimit(10)
,根据我的排序声明,我只会得到10个结果,而不是10个最好的结果。Zend_Search_Lucene限制结果集
答
你的目的,你不能使用
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。
是的,你必须搜索整个索引,但没有理由一旦你整理索引就返回整个索引。例如,在标准SQL中,查询'SELECT * FROM表ORDERBY字段ASC LIMIT 10'命令整个索引,但它只返回排序索引中的前10条记录。 – 2011-04-05 17:34:54