Поисковое поведение Symfony/Doctrine: как переопределить функцию поиска?

Дело в том, что я реализовал поисковое поведение в моем проекте Symfony, и он работает нормально. Проблема в том, что я пытаюсь выполнить поиск по двум или более словам. Запрос, сгенерированный функцией поиска, выглядит так:

SELECT COUNT(keyword) AS relevance, id FROM table_index 
WHERE id IN (SELECT id FROM table_index WHERE keyword = 'foo') 
AND id IN (SELECT id FROM table_index WHERE keyword = 'bar') 
GROUP BY id 
ORDER BY relevance DESC

Поскольку при поиске используется предложение AND, эти два слова должны быть частью одного и того же элемента, чтобы быть релевантными. Хотя, чтобы изменить поведение поиска, я хотел бы переопределить функцию поиска. Но поскольку table_index, сгенерированный doctrine, не объявлен в моем schema.yml, я не могу выполнить запрос по нему.

Есть ли другой способ сделать это?? Спасибо

1 ответ

Решение

Хорошо, плохо, я думал, что доступ к table_index невозможен, потому что не объявлен в моем schema.yml, но на самом деле это так, благодаря строке поиска.

В моей функции поиска, а не

$q = Doctrine_Query::create()
  ->select('COUNT(e.keyword) AS relevance, e.id')
   ->from('Table_Index t');

Я просто должен был удалить _ в имени таблицы индекса

$q = Doctrine_Query::create()
  ->select('COUNT(e.keyword) AS relevance, e.id')
   ->from('TableIndex t');
Другие вопросы по тегам