Самый правильный ответ - Сфинкс (
sphinxsearch.com). Полноценный поиск можно сделать только на поисковом движке, на самой базе данных - это всегда для галочки.
А если решать в рамках поставленных условий, то лично я, обычно, создавал View со всеми необходимыми данными. Это, по крайней мере, освободит от "ручного" добавления данных и слежением за консистентностью.