Каким образом организовать поиск по сайту на Symfony?
1) использовать один из движков поиска (sphinx, ElasticSearch). Есть готовые бандлы, помогающие использовать эти движки в symfony-проекте.
2) либо сделать самому кучу поисков по нужным сущностям, можно сделать UNION запрос:SELECT id, title, 'article' as `type` FROM Article WHERE ...
UNION SELECT id, title, 'news' as `type` FROM News WHERE ...
UNION SELECT id, title, 'post' as `type` FROM Post WHERE ...
да, второй способ без индексирования. Зато простой :), если поиск нужен "для галочки". Если нужен нормальный поиск с хорошей произодительностью, то используй первый способ.
Организовывать поиск внутри приложения, по имеющимся сущностям - это не реально, мне кажется. По каким полям искать? Как ранжировать результаты? 
Лучше пойти путем "краулеров" от поисковых систем, которые сканируют и собирают контент, обходя сайт как поисковый робот. Все результаты можно уместить в 1 таблице вида: link, title, content, last_update
У Симфони есть мощный инструмент commands, с помощью которого можно создавать консольные приложения. 
Я бы пошел путем написания "краулера" которого можно запускать по крону. Краулер будет сканировать ваш же сайт и индексировать контент. У Симфони так же есть DomCrawler компонент, которым легко выбрать все ссылки на странице, а так же собрать текстовый контент. Текстовый контент можно помещать в специальный тег (например ) или просто классом, чтобы не парсить все подряд. 
Алгоритм примерно такой: 
1. парсим "/" 
2. сохраняем контент из тега  
3. сохраняем все новые ссылки (исключая внешние ссылки и pdf, doc, etc) в табличке. 
4. парсим следующую запись из нашей таблицы.
Таким образом обходим весь сайт по крону. 
P.S. 
Я бы еще поискал готовые бандлы, наверняка они есть.