我想在搜索查询中通过拆分数组从DB中获取最匹配的数据 想象一下我的疑问是:“如何购买摩托车”&在DB中我已经获得了一些像
这样的数据买直升机
买一辆摩托车
买车
因此,在拆分查询后,它会搜索到DB “how”,“to”,“buy”, “摩托车”恭敬地。使用这些子字符串,查询仅在输出中生成“购买直升机”字符串。但我想购买摩托车数据。我生成了一个方法,但它只在任何这些子字符串与DB中的相同数据匹配时才编码数据。 这是我的代码,只获取第一个匹配的数据,但我想要的数据是否为。 2。
$str=$_POST['search'];
$str=preg_split("/[\s]+/", $str);
foreach ($str as $search ) {
$sql = "SELECT answer FROM query_tbl WHERE q1 like '%".$search."%' ";
$record = mysqli_query($link, $sql);
$rows=mysqli_fetch_assoc($record);
if ($rows == true) {
echo json_encode(array('ans'=>$rows['answer']));
}
}
那么,我应该遵循哪种算法以及在何处使用它来实现我的目标?
答案 0 :(得分:0)
我认为最好按照here所述进行全文搜索。
默认情况下或使用IN NATURAL LANGUAGE MODE修饰符,MATCH()函数对文本集合执行字符串的自然语言搜索。集合是FULLTEXT索引中包含的一个或多个列的集合。搜索字符串作为AGAINST()的参数给出。对于表中的每一行,MATCH()返回一个相关值;也就是说,搜索字符串与MATCH()列表中指定的列中该行中的文本之间的相似性度量。