【问题标题】:Zend_Search_Lucene Limiting the Result SetZend_Search_Lucene 限制结果集
【发布时间】:2011-04-05 13:44:04
【问题描述】:

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

【问题讨论】:

    标签: zend-framework zend-search-lucene


    【解决方案1】:

    出于您的目的,您不能使用

    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 table ORDERBY field ASC LIMIT 10 对整个索引进行排序,但它只返回排序索引中的前 10 条记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多