有没有办法通过最好的N个结果来限制结果集?如果我使用Zend_Search_lucene::setResultSetLimit(10)
我只会得到任何 10 个结果,而不是根据我的排序声明的 10 个最佳结果。
问问题
1095 次
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 回答