Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 搜索字符串匹配相关性_Php_Mysql - Fatal编程技术网

Php 搜索字符串匹配相关性

Php 搜索字符串匹配相关性,php,mysql,Php,Mysql,我想搜索一个产品列表,仅在其标题上。产品名称可以是一个、两个、三个或更多的单词,例如“丛林战士”。我想对结果进行相关性排序,类似这样 全场比赛 搜索词是否出现在产品标题的第一个词中 搜索词是否出现在第一个词中,并且在产品标题中出现了不止一次(出现的次数表明它的排名-更多=更高的排名-不包括部分匹配 部分匹配 搜索词是否出现在第二个词以及产品标题中的任何其他词中 搜索词是否出现在产品标题的第三个或更多单词中 搜索词是否作为产品标题中的任何第一个词和任何其他词的一部分出现(例如,“战士”一词中出现了

我想搜索一个产品列表,仅在其标题上。产品名称可以是一个、两个、三个或更多的单词,例如“丛林战士”。我想对结果进行相关性排序,类似这样

全场比赛
  • 搜索词是否出现在产品标题的第一个词中
  • 搜索词是否出现在第一个词中,并且在产品标题中出现了不止一次(出现的次数表明它的排名-更多=更高的排名-不包括部分匹配
  • 部分匹配
  • 搜索词是否出现在第二个词以及产品标题中的任何其他词中
  • 搜索词是否出现在产品标题的第三个或更多单词中
  • 搜索词是否作为产品标题中的任何第一个词和任何其他词的一部分出现(例如,“战士”一词中出现了“战争”一词)
  • 我通过在数据库上运行标准查询来获取产品标题数组

    $q = "SELECT product_title FROM products_table WHERE product_title LIKE '%" . searchString . "%' AND product_status >= '1'";
    
    并填充产品数组

    if($products = $db->recordset($q))
    
    因此,我需要遍历数组,并根据我的排名标准对每个结果进行相关性排名。这就是我的困境所在


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

    MySQL支持全文索引和搜索:

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


    请参见

    在MySQL中,您需要使用索引来实现这一点。您是否尝试过拆分单词并使用函数检查相关性?好的,我遵循了“如何查找相似结果并按相似性排序”中的信息,该表是InnoDB,因此我创建了一个临时表作为MyISAM,但我仍然得到了错误“使用的表类型”不支持全文搜索“?ALTER TABLE your_name ENGINE='MYISAM'好的,我已经这样做了,我正在将我的查询发布到问题-即使我知道有匹配项,它也不会返回任何结果