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, я не знаю, какой код или запрос использовать.
1 ответ
Решение
Ваш запрос будет:
$query = Zend_Search_Lucene_Search_QueryParser::parse("title:($query1) detail:($query2) category:($query3)";
$hits = $index->find( $query);
Индекс нечувствителен к регистру, если явно не установлен с учетом регистра при создании.