Недавно я разработал многообещающий полнотекстовый поиск для использования с моим веб-приложением на основе Zend Framework - я не смог найти ни одного готового решения, отвечающего моим требованиям, поэтому я приложил все усилия и разработал простой (полнотекстовый) механизм поиска по ключевым словам. с нуля. Мне показались полезными следующие статьи:
http://devzone.zend.com/node/view/id/1304
http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
Теперь у меня есть система, которая сопоставляет элементы на основе «текстовой сводки», которая создается во время сохранения (или обновления) элемента в базе данных. У меня есть таблица с именем kw_search_summary, которая содержит текстовую сводку по каждому элементу (сгенерированный скрипт), его идентификатор и идентификатор категории. Столбец 'summary' является полнотекстовым индексом mysql, поэтому я просто сопоставляю () сводный столбец AGAINST () с заданным выражением и отображаю результаты по релевантности. Код, который создает этот запрос, выглядит примерно так:
$select = $this->db->select()
->from(array('kwi' => 'kw_search_index'),
array('id','prodcatid','itemid','useradid','summary','relevance' => "match(summary) against($safeExp in boolean mode)"))
->where("match(summary) against($safeExp in boolean mode)")
->order('relevance desc')
->limitPage($currentPage,self::RESULTS_PER_PAGE);
Надеюсь, это было хоть немного полезно.