2011-04-05 84 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