有没有办法通过最佳 N 结果来限制结果集?如果我使用Zend_Search_lucene::setResultSetLimit(10)
,根据我的排序声明,我只会获得10个结果而不是10个最佳结果。
答案 0 :(得分: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。