Поисковое поведение Symfony / Doctrine: как переопределить функцию поиска? - PullRequest
1 голос
/ 05 июня 2011

Вот что я реализовал в своем проекте 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 Ответ

1 голос
/ 05 июня 2011

Хорошо, плохо, я думал, что доступ к 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');
...