【问题标题】:MySQL query to search database for products similar to a given product nameMySQL 查询以在数据库中搜索与给定产品名称相似的产品
【发布时间】:2013-01-06 21:37:14
【问题描述】:

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

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

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

如何按最接近的匹配对结果排序?

【问题讨论】:

  • 如果这种类型的查询会变得非常普遍,我建议您研究一下 solr,这将提供比数据库中的查询更有效的搜索

标签: mysql sql-like


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-16
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多