执行查询SELECT WHERE LIKE时如何计算匹配数?

时间:2014-01-23 20:44:03

标签: php mysql

如何在执行以下查询时计算匹配数:

编辑:对不起,我认为你们会理解这个错误的解释。 这是一个更新。

$thingsilike = explode(" ", $search); 
foreach($thingsilike as $things){
$array[] = "keywords LIKE '%$things%'";
}

让我们说下面的句子“我喜欢苹果和橘子”放在数组中。数组看起来像这样

$array('I', 'like', 'apples', 'and', 'oranges');

query = ("SELECT * FROM row WHERE thingspeoplelike LIKE .implode(' OR', $array);

然后,查询将搜索“whatpeoplelike”中的每个关键字 我想知道的是如何找出与这些词有多少匹配 所以我们可以说有三个句子就像人一样:

第一个'我喜欢苹果和橘子' 匹配的数量将是5

第二个'我喜欢苹果和菠萝' 比赛的数量将是4

第三句'我喜欢苹果' 匹配数量为3

我想知道如何能够再次找出并计算比赛数量,对不起的解释表示遗憾,并提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您想计算与您的查询匹配的行数,或者更确切地说是数组的输入,那么只需使用:

"SELECT COUNT(*) FROM row WHERE things LIKE ".implode(' OR ', $array)

问题澄清后的更新:

/* split the input sentence */
$thingsilike = explode(" ", $search);

$result = /* Get all sentences (thingspeoplelike) from row and store it in $result */

foreach($result as $sentence) {

    $count = 0;
    $parts = explode(" ", $sentence);

    foreach($thingsilike as $keyword) {

        if(in_array($keyword, $parts) == true) {

            $count = $count + 1;
        }
    }

    echo "Found {$count} matches for result '{$sentence}'";
}

我希望那就是你所寻找的......