我已经研究了Levenschein函数以及其他解决方案,但我认为我想要做的事情可以通过一个查询完成。我编写了一个删除常用停用词的函数,然后我将重要的单词放入一个数组中以便在查询中使用。这是我到目前为止所拥有的。
$title = removecommonwords($itemtitle);
$title = explode (" ", $title);
$comparequery = mysql_query("SELECT * FROM listings WHERE (CONCAT(title, description) LIKE '%".$title."%') LIMIT 0,5 ORDER BY ...);
我如何按最接近的匹配对结果进行排序?
答案 0 :(得分:0)
如果您现在修复了类似的子句,那么这应该适用于您的搜索,但请注意,您将进行全表扫描,因为CONCAT()会破坏标题或描述中存在的任何索引的好处。
explode()
创建一个数组。你想要implode()
创建一个字符串,或者你需要\来遍历$ title数组并在每个值上调用查询...你不能把这样的数组放到一个数组中像这样的条款。
Mysql无法按照类似条款匹配的好坏百分比进行本地排序。