Я работаю над приложением в http://demos.zatechcorp.com/codeigniter/Zend Framework Lucene Boolean/«Google» -как поиск
В своем нынешнем воплощении работает на моей машине, я загрузил ZendFramework внутри Codeigniter, и генерируется индекс, как это :
// ... Some code that loads all the markets
foreach ($markets as $market)
{
$doc = new Zend_Search_Lucene_Document();
// Id for retrieval
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('id', $market->id));
// Store document URL to identify it in search result.
$doc->addField(Zend_Search_Lucene_Field::Text('url', $market->permalink));
// Index document content
$doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $market->description));
// Title
$doc->addField(Zend_Search_Lucene_Field::Text('title', $market->title));
// Phone
$doc->addField(Zend_Search_Lucene_Field::Keyword('phone', $market->phone));
// Fax
$doc->addField(Zend_Search_Lucene_Field::Keyword('fax', $market->fax));
// Street
$doc->addField(Zend_Search_Lucene_Field::Keyword('street', $market->street));
// City
$doc->addField(Zend_Search_Lucene_Field::Keyword('city', $market->city));
// State
$doc->addField(Zend_Search_Lucene_Field::Keyword('state', $market->state));
// Zip
$doc->addField(Zend_Search_Lucene_Field::Keyword('zip', $market->zip));
// Type
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('type', 'market'));
// Store Document
$index->addDocument($doc);
}
в своих поисках, я делаю это:
$hits = $index->find($q);
Это работает с простыми словами, но когда я хочу, чтобы сделать поиск как «Шеба Foods» (кавычки включают г), он возвращает один результат, но не тот, который даже не имеет слова «Шеба».
Я отошел от полнотекстового поиска MySQL из-за его очевидных проблем и не смог добиться этого.
Я смотрел на метод Zend_Search_Lucene_Search_QueryParser :: parse(). Ответ лежит в этом методе?
«id» - это идентификатор документа, хранящегося в индексе. вы * можете * использовать id, вам просто нужно обратиться к нему через getDocument() -> id. – typeoneerror