2011-04-05 6 views
0

최상의 결과 집합을 제한하는 방법이 있습니까 N 결과? Zend_Search_lucene::setResultSetLimit(10)을 사용하면 10 가지 결과 만 표시되며 내 정렬 선언에 따라 10 가지 결과가 표시되지 않습니다. 그것은 당신에게 단지 첫 번째 N 요소를 제공하기 때문에 사용자의 목적Zend_Search_Lucene 결과 집합 제한

답변

0

당신은

Zend_Search_lucene::setResultSetLimit(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과 같은 다른 검색 엔진을 사용하는 것이 좋습니다. 나는 많은 프로젝트에서 그것을 사용하고 그것을 사용하는 것이 좋습니다. 관리가 훨씬 빠르고 빠릅니다. 젠드 프레임 워크 프로젝트에서 사용하려면 solr php client을 사용해야합니다.

+2

예 전체 색인을 검색해야하지만 정렬 한 후에는 전체 색인을 반환 할 이유가 없습니다. 예를 들어, 표준 SQL에서'SELECT * FROM table ORDERBY field ASC LIMIT 10 '질의는 전체 인덱스를 정렬하지만 정렬 된 인덱스에서 처음 10 개의 레코드 만 반환합니다. –