搜索字符串匹配相关性


search string match relevance

我想搜索一个产品列表,只搜索它们的标题。产品名称可以是一个、两个、三个或更多的单词,例如"丛林战士"。我想对结果进行相关性排序,比如这样。

完全匹配

  1. 搜索词是否出现在产品标题的第一个单词中
  2. 搜索词是否出现在第一个单词中,并在产品标题中出现不止一次(它出现的次数决定了它的排名-更多=更高的排名-不包括部分匹配

部分匹配

  1. 搜索词是否出现在第二个单词和产品标题中的任何其他单词中
  2. 搜索词是否出现在产品标题的第三个或更多单词中
  3. 搜索词是否作为第一个单词和产品标题中任何其他单词的一部分出现(例如,"战争"一词出现在"战士"一词中)

我通过在数据库上运行标准查询来获得我的产品标题数组

$q = "SELECT product_title FROM products_table WHERE product_title LIKE '%" . searchString . "%' AND product_status >= '1'";

并填充产品阵列

if($products = $db->recordset($q))

因此,我需要遍历数组,并根据我的排名标准对每个结果进行相关性排名。。这就是我被卡住的地方。

有人建议使用FULLTEXT搜索,我已经勾选了它作为答案。不过,我对该查询有问题,所以我打开了一个新问题

MySQL支持全文索引和搜索:
全文搜索

InnoDB从5.6 起现在支持全文搜索

请参阅如何查找相似的结果并按相似性排序?