使用 SQL 进行多关键字搜索
Multi keywords search with SQL
我在我的网站上使用基于键盘绑定和 ajax 请求的搜索栏。它工作正常,但我希望我的搜索引擎能够通过多关键字管理获得更好的结果。
但是我找不到任何简单的方法来设置这种搜索方法。
有人知道如何设置吗?
这是正在发出的实际 SQL 请求:
if ($recherche !=""){
$req = $this->bdd->prepare("SELECT * FROM videos WHERE titre LIKE :recherche OR auteur LIKE :recherche UNION SELECT videos.id_video, videos.titre, videos.lien, videos.auteur, videos.date_upload FROM videos RIGHT JOIN mots_clefs ON videos.id_video = mots_clefs.id_video AND mots_clefs.mot_clef LIKE :recherche ORDER BY date_upload DESC LIMIT ".$start.", ".$limit);
$req->execute(array('recherche' => "%".$recherche."%"));
$result = json_encode($req->fetchAll(PDO::FETCH_ASSOC));
}
请求示例:
SELECT * FROM videos WHERE titre LIKE '%word 1 word 2%' OR auteur LIKE '%word 1 word 2%' UNION SELECT videos.id_video, videos.titre, videos.lien, videos.auteur, videos.date_upload FROM videos RIGHT JOIN mots_clefs ON videos.id_video = mots_clefs.id_video AND mots_clefs.mot_clef LIKE '%word 1 word 2%' ORDER BY date_upload DESC LIMIT 0, 20);
您可以通过一次传递一个关键字来循环执行上述查询。
将用户提供的整个关键字列表放入一个字符串中。
使用 string.Split() 方法通过将逗号 (,) 作为分隔符将关键字列表获取到数组列表中。
遍历数组列表并传递给查询。
确保将从 SQL 获取的数据附加到数据 table 或数据集中,而不是重写它。
string select = "SELECT * FROM [MyTable] WHERE [Title] LIKE '%" + strSearch.Replace(",", "%' OR [Title] LIKE '%") + "%'";
我在我的网站上使用基于键盘绑定和 ajax 请求的搜索栏。它工作正常,但我希望我的搜索引擎能够通过多关键字管理获得更好的结果。
但是我找不到任何简单的方法来设置这种搜索方法。
有人知道如何设置吗?
这是正在发出的实际 SQL 请求:
if ($recherche !=""){
$req = $this->bdd->prepare("SELECT * FROM videos WHERE titre LIKE :recherche OR auteur LIKE :recherche UNION SELECT videos.id_video, videos.titre, videos.lien, videos.auteur, videos.date_upload FROM videos RIGHT JOIN mots_clefs ON videos.id_video = mots_clefs.id_video AND mots_clefs.mot_clef LIKE :recherche ORDER BY date_upload DESC LIMIT ".$start.", ".$limit);
$req->execute(array('recherche' => "%".$recherche."%"));
$result = json_encode($req->fetchAll(PDO::FETCH_ASSOC));
}
请求示例:
SELECT * FROM videos WHERE titre LIKE '%word 1 word 2%' OR auteur LIKE '%word 1 word 2%' UNION SELECT videos.id_video, videos.titre, videos.lien, videos.auteur, videos.date_upload FROM videos RIGHT JOIN mots_clefs ON videos.id_video = mots_clefs.id_video AND mots_clefs.mot_clef LIKE '%word 1 word 2%' ORDER BY date_upload DESC LIMIT 0, 20);
您可以通过一次传递一个关键字来循环执行上述查询。
将用户提供的整个关键字列表放入一个字符串中。
使用 string.Split() 方法通过将逗号 (,) 作为分隔符将关键字列表获取到数组列表中。
遍历数组列表并传递给查询。 确保将从 SQL 获取的数据附加到数据 table 或数据集中,而不是重写它。
string select = "SELECT * FROM [MyTable] WHERE [Title] LIKE '%" + strSearch.Replace(",", "%' OR [Title] LIKE '%") + "%'";