Salah satu metodenya adalah dengan menggunakan panggilan REGEXP MySQL dalam Ekspresi Predikat.
Dimana $select
adalah turunan dari Zend\Db\Sql\Select
dan $searchFor
adalah istilah pencarian Anda:
Pencarian substring asli mungkin menggunakan tempat seperti ini...
$select->where(array(
new Predicate\PredicateSet(
array(
new Zend\Db\Sql\Predicate\Like('tag', '%' . $searchFor . '%'),
new Zend\Db\Sql\Predicate\Like('title', '%' . $searchFor . '%'),
),
Zend\Db\Sql\Predicate\PredicateSet::COMBINED_BY_OR
),
));
...dan versi keseluruhan kata di atas adalah:
$select->where(array(
new Predicate\PredicateSet(
array(
new Zend\Db\Sql\Predicate\Expression("tag REGEXP '([[:<:]]" . $searchFor ."[[:>:]])'"),
new Zend\Db\Sql\Predicate\Expression("title REGEXP '([[:<:]]" . $searchFor ."[[:>:]])'"),
),
Zend\Db\Sql\Predicate\PredicateSet::COMBINED_BY_OR
),
));
Perhatikan ini adalah pencarian multi-bidang, jadi saya telah melakukan PredicateSet::COMBINED_BY_OR
. Butuh waktu terlalu lama untuk berhenti bermain-main dengan \b
di regex saya. Semoga ini menghemat waktu seseorang di luar sana.