Here is the thing, I have implemented the searchable behavior on my symfony project and it's working fine. The problem is when I try to perform a search with two words or more. The query generated by the search function is like:
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
Because the search uses a AND clause, these two words have to be part of a same item to be relevant. Though to modify the behavior of the search I would like to override the search function. But because the table_index generated by doctrine is not declared on my schema.yml, I'm not able to perform query on it.
Is there an other way to do it ?? Thanks开发者_运维知识库
Ok, my bad, I thought that accessing the table_index was impossible because not declared on my schema.yml, but actually it is, thanks to the searchable line.
In my search function,Instead of
$q = Doctrine_Query::create()
->select('COUNT(e.keyword) AS relevance, e.id')
->from('Table_Index t');
I just had to remove the _ in the name of the index table
$q = Doctrine_Query::create()
->select('COUNT(e.keyword) AS relevance, e.id')
->from('TableIndex t');
精彩评论