$rows
akan memiliki data di mana kata kunci Anda code
kecocokan di tabel Anda, Anda dapat menulis ulang kode agar cocok dengan kedua kata kunci sebagai
$keyword = 'hello code';
$exloded = explode(' ', $keyword);
$query = 'SELECT * FROM A ';
$i = 0;
$params = array();
foreach ($exploded as $value):
if ($i == 0) {
$query .= ' WHERE `text` LIKE :value_'.$i;
} else {
$query .= ' OR `text` LIKE :value_'.$i;
}
$params[':value_'.$i] = '%'.$value .'%';
$i++;
endforeach;
$sth = $db->query($query);
$sth->execute($params);
$rows = $sth->fetchAll();
echo '<pre>';print_r($rows);echo '</pre>';
'; Buat kueri Anda secara berulang (di atas kata kunci yang Anda berikan) dan tetapkan placeholder unik dalam kueri agar cocok dengan semua nilai
Edit untuk pencarian teks lengkap
Menggunakan pencarian teks lengkap, Anda dapat mencocokkan frasa yang sama persis dengan kata kunci yang disediakan,Untuk bekerja dengan pencarian teks lengkap, Anda memerlukan indeks jenis FULLTEXT
.
ALTER TABLE `A` ADD FULLTEXT INDEX `fulltextindex` (`text`);
Dan kueri akan seperti
$keyword = 'hello code';
$exloded = explode(' ', $keyword);
$where = '';
$i = 0;
$select = array();
$params = array();
foreach ($exploded as $value):
$select[]= ' MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE) ';
if ($i == 0) {
$where .= ' WHERE MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE)';
} else {
$where .= ' OR MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE)';
}
$params[':value_'.$i] = $value ;
$i++;
endforeach;
$query ='SELECT *,'. implode( ' + ',$select).' AS score FROM A '.$where.' ORDER BY score DESC';
$sth = $db->query($query);
$sth->execute($params);
$rows = $sth->fetchAll();
echo '<pre>';print_r($rows);echo '</pre>';
'; Kode di atas akan menghasilkan query seperti
SELECT *,
MATCH(`text`) AGAINST('hello' IN BOOLEAN MODE)
+
MATCH(`text`) AGAINST('code' IN BOOLEAN MODE) AS score
FROM A
WHERE MATCH(`text`) AGAINST('hello' IN BOOLEAN MODE)
OR MATCH(`text`) AGAINST('code' IN BOOLEAN MODE)
ORDER BY score DESC
Alias score
dalam kueri di atas akan memiliki nilai untuk setiap baris dan skor yang cocok sehingga Anda dapat mengurutkan hasil Anda secara menurun untuk menunjukkan catatan yang memiliki skor tertinggi terlebih dahulu.