Zend_Search_Lucene Ограничение набора результатов - PullRequest
0 голосов
/ 05 апреля 2011

Есть ли способ ограничить набор результатов лучшими N результатами?Если я использую Zend_Search_lucene::setResultSetLimit(10), я получу только 10 результатов, а не 10 лучших согласно моей декларации сортировки.

1 Ответ

0 голосов
/ 05 апреля 2011

Для вашей цели вы не можете использовать

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 Framework, вы должны использовать solr php клиент .

...