2

我已经研究了 Levenschein 函数以及其他解决方案,但我认为我想要做的事情可以通过一个查询来完成。我编写了一个函数来删除常见的停用词,然后我将重要的单词放入一个数组中以在查询中使用。这是我到目前为止所拥有的。

$title = removecommonwords($itemtitle);
$title = explode (" ", $title);

$comparequery = mysql_query("SELECT * FROM listings WHERE (CONCAT(title, description) LIKE '%".$title."%') LIMIT 0,5 ORDER BY ...);

我怎样才能按最接近的匹配排序结果?

4

1 回答 1

0

如果您修复了您现在有一个数组的 like 子句,这应该适用于您的搜索,但请注意,您将进行全表扫描,因为 CONCAT() 会破坏标题或描述中存在的任何索引的好处。

explode()创建一个数组。您要么想implode()创建一个字符串,要么需要 \ 遍历 $title 数组并调用每个值的查询......你不能将这样的数组粘贴到这样的 like 子句中。

Mysql 无法按照like 子句中匹配程度的百分比进行本地排序。

于 2013-01-06T21:43:15.483 回答