簡単に言えば、Doctrine2 に固執し、LIKE クエリを使用したくない、検索エンジンを導入したくない場合、解決策はありません。
Doctrine2 は InnoDB に依存しており、InnoDB (現在) はフルテキストをサポートしていません。したがって、全文または LIKE クエリに焦点を当てることは、私が言うオプションではありません。ただし、どちらも Lucene をエンジンとして使用しているため、Solr や ElasticSearch を使用するよりもはるかに簡単な方法があります。ファイル システム (プロジェクト ディレクトリ内) に Lucene インデックスを作成し、ZendSearch
インデックス作成とクエリに使用できます。
composer 経由で要求zendframework/zendsearch
し、検索のためにこれを行います。
use ZendSearch\Lucene\Lucene;
use ZendSearch\Lucene\Document;
use ZendSearch\Lucene\Document\Field;
// this is relative to your project say /var/www/site/data/search
$dir = 'data/search';
// Create index
Lucene::create($dir);
// Insert a new document
$index = Lucene::open($dir);
$doc = new Document;
$doc->addField(Field::keyword('foo', 'bar'));
$index->addDocument($doc);
// Search the index
$index = Lucene::open($dir);
$result = $index->query('foo:bar');
echo count($result);
検索をサポートするためにサーバーにバイナリ (Solr や ElasticSearch など) をインストールする必要はありません。全文検索よりもさらに高速ですが、適切な検索をサポートするには、もちろんインデックスを最新の状態に保つ必要があります。