早晨,
我在一个网站上有一个搜索栏,我正在对 2 个表格和 4 个列中的一个单词进行通配符搜索。我想做一个多词搜索,所以我把编码换成了 match..against 语句。
我遇到的问题是订购相关性。目前,如果我搜索 3 个单词,我希望它首先显示带有这 3 个单词的产品,但它似乎优先显示第 3 个单词而不是第 2 个单词,然后是第 3 个单词。不确定这是否是由于如此广泛的搜索(按列),或者我是否需要关联每列的相关性。
我添加了布尔模式并使用大于号更改了搜索字符串中的空格以尝试添加优先级..
我正在使用 PDO 的准备好的语句以获得最大的安全性..(我希望)
我目前的代码..
$search = filter_var($_GET['s'], FILTER_SANITIZE_STRING);
$searchfor = str_replace(' ',' >',$searchfor);
$itemResults = $conn->prepare("SELECT a.*
FROM item_info_short a
LEFT JOIN item_information b
ON a.id = b.id
WHERE MATCH(a.title,a.manufacturer,a.item_code,a.colour,b.shortdescription)
AGAINST(:searchfor IN BOOLEAN MODE)
LIMIT $offset,$itemsperpage");
$itemResults->bindValue(':searchfor',$searchfor,PDO::PARAM_STR);
$itemResults->execute();
非常感谢您的帮助。肯尼