А я считаю, в CMS, ориентированной на массовое использование, должно быть решение для поиска вроде этого. Ведь очень часто на shared hosting нет возможности использовать Sphinx, а встроенный поиск от Google/Яндекс — не вариант для закрытых или плохо индексирующихся сайтов.
Но есть одно но.
Zend_Lucene довольно медленный. Как при индексации так и при поиске.
При поиске по чуть более, чем 200000 позиций время запроса примерно 0.2-0.3 сек.
А Sphinx с этой-же задачей справляется за 0.008-0.016 сек.
+ Zend_Lucene индексировал эти позиции около 30-ти минут, а Sphinx за 2 сек все сделал.
Это мои личные наблюдения на конкретной задаче.
Да, на счет времени индексации Zend_Lucene Вы правы, это немного огорчает. На одном достаточно популярном огромном форуме, не припомню сейчас названия, преиндексация проводится каждые несколько минут с помощью Sphinx-а, с такими задачами Zend_Lucene, конечно, не справиться.
Для создания полноценного поиска еще далеко, нужно еще учесть морфологические формы слов, нужно отсортировать результаты поиска по релевантности, сделать хотя-бы минимальную коррекцию ошибок пользователя, в идеале — сделать возможным поиск с использованием AND / OR, точной фразы и т.д. проще уже действительно Sphinx использовать или API поисковиков.
Вы про связь многие-ко-многим не слышали?
В таблицах связи многие ко многим Primary key отдельным полем не ставится.
Почему idname и idtext не foreign key?
Где ключ Unique(idname, idtext)
когда передо мной встала похожая задача в проекте на постгресе, мне оказалось достаточно почитать мануал по написанному в МГУ (гордость!) и включенного в поставку модуля полнотекстового поиска. Очень удобная штука, хотя и не без минусов. С тех пор постгрес я просто обожаю (может, я просто не знаю об аналогах для MySQL?)
Если кому интересно — напишу потом туториал о том, как за день можно сделать персональный гугл для сайта :)
вы открыли для себя смысл полнотекстового поиска(но только его одну малую часть)
а как же методы оптимизации?
а как же релевантность?
а исключение ошибок?
>солце (см скрин)
про какую эффективность в заголовке вы хотели сказать?
Своя поисковая система на сайте