Как получить первые 20 документов в поиске Zend Lucene, если не задан поисковый запрос? - PullRequest
1 голос
/ 05 февраля 2012

У меня есть довольно новое понимание Zend_Search_Lucene, и как создавать и искать документы, добавленные к указателям, но я хочу знать, возможно ли вернуть документы, если поисковый запрос вообще не предоставляется.

Я знаю, что это звучит странно и, вероятно, идет вразрез с целью поиска lucene, но я столкнулся со сценарием, в котором возврат первых 20 документов пользователю предпочтительнее, чем ничего, если они просто нажимают на ' Поиск "без ввода в любой поисковый запрос.

Таким образом, в этом и заключается мой вопрос: какой поисковый запрос я мог бы предоставить Zend_Search_Lucene, который бы возвращал первые 20 документов, с которыми он встречался, если не было найдено ни одного поискового термина, вместо того, чтобы видеть некоторые результаты и ничего не видеть .

У меня уже все отлично работает:

<?php

    Zend_Search_Lucene::setResultSetLimit(20);

    $index = Zend_Search_Lucene::open("some/path/to/index");

    $search_term = trim($_POST["search_term"]);

    if ($search_term == "")
    {
        // adjust the search term to return any documents...
        // will obviously be limited to the first 20...
    }

    $hits = $index->find($search_term);

    // display the results...
    // ...

?>

Большое спасибо за ваше время и любую помощь / предложения!

1 Ответ

2 голосов
/ 06 февраля 2012

, если условие поиска не указано, выполнить поиск по 20 записям с помощью диапазона поиска с идентификаторами от 1 до 20 (но ваш документ должен иметь поле идентификатора)

$from = new Zend_Search_Lucene_Index_Term(1, 'id');
$to   = new Zend_Search_Lucene_Index_Term(20, 'id');
$query = new Zend_Search_Lucene_Search_Query_Range(
             $from, $to, true // inclusive
         );
$hits  = $index->find($query);
...