Zend Lucene - Как сделать запрос

Моя функция создания индекса приведена ниже

function create()
{
    Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());
    $index = Zend_Search_Lucene::create('data/index');      
    $doc = new Zend_Search_Lucene_Document();

    $doc->addField(Zend_Search_Lucene_Field::Text('title', 'a cheap car in town milage under 3000','utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::Text('detail','a cheap car in town milage under 3000','utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::Text('category', 'milage under 3000','utf-8'));

    $index->addDocument($doc);
}

Когда пользователь выполняет поиск по запросу «дешевая машина в городе с пробегом менее 3000», я разделю запрос на 3 части.

$query1 = "a cheap car";
$query2 = "in town";
$query3 = " milage under 3000";

Я хочу поискать

$query1 in field "title", $query2 in field "detail", $query3 in field "category". 

Я также хочу искать нечувствительность к регистру чисел и нечувствительность к тексту. Как мне это сделать? Мне понадобится фактический код, потому что я полностью запутался в документации Zend Lucene, я не знаю, какой код или запрос использовать.


person angry kiwi    schedule 02.03.2011    source источник


Ответы (1)


ваш запрос будет:

$query = Zend_Search_Lucene_Search_QueryParser::parse("title:($query1) detail:($query2) category:($query3)";
$hits = $index->find( $query);

Индекс не чувствителен к регистру, если явно не установлен регистр при создании.

person Sergey    schedule 02.03.2011