1

これが、symfonyプロジェクトに検索可能な動作を実装しましたが、正常に機能しています。問題は、2語以上で検索しようとしたときです。検索機能によって生成されるクエリは次のようになります。

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句を使用するため、これら2つの単語は、関連するために同じアイテムの一部である必要があります。検索の動作を変更しますが、検索機能をオーバーライドしたいと思います。しかし、doctrineによって生成されたtable_indexがschema.ymlで宣言されていないため、クエリを実行できません。

それを行う他の方法はありますか?ありがとう

4

1 に答える 1

1

残念ながら、schema.ymlで宣言されていないため、table_indexにアクセスすることは不可能だと思いましたが、実際には、検索可能な行のおかげでそうなっています。

私の検索機能では、代わりに

$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 に答える