1

事情是这样的,我已经在我的 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 子句,所以这两个词必须是同一项目的一部分才能相关。虽然要修改搜索的行为,但我想覆盖搜索功能。但是因为没有在我的 schema.yml 上声明由学说生成的 table_index,所以我无法对其执行查询。

还有其他方法吗??谢谢

4

1 回答 1

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');
于 2011-06-05T10:03:09.390 回答