搜索字符串匹配相关性

时间:2013-09-05 09:58:00

标签: php mysql

我想单独搜索产品列表。产品标题可以是一个,两个,三个或更多单词,例如“Jungle Warrior”。我想用相关性对结果进行排名,就像这样。

完全匹配

  1. 搜索字词是否出现在产品标题的第一个单词
  2. 搜索字词是否出现在第一个字词中且在产品标题中出现多次(出现的次数会影响其排名方式 - 更多=排名更高 - 不包括部分匹配
  3. 部分匹配

    1. 搜索字词是否出现在产品标题中的第二个字和任何其他字词
    2. 搜索字词是否出现在产品标题的第三个或更多字词中
    3. 搜索词是否显示为产品标题中任何首字和任何其他字的一部分(例如,“战争”一词出现在“战士”中)
    4. 我通过在数据库上运行标准查询来获取我的产品系列数组

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

      并填充产品数组

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

      那么我需要完成整个数组并根据我的排名标准对每个结果进行排名。这就是我被困住的地方。

      有人建议使用FULLTEXT搜索,我已将其作为答案。我有一个问题,但我已经开了一个新问题

1 个答案:

答案 0 :(得分:0)

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

InnoDB现在支持从5.6开始的全文搜索

请参阅How to find similar results and sort by similarity?