【发布时间】:2014-10-02 10:10:49
【问题描述】:
我目前正在处理一个查询,该查询必须显示特定表中所有文章的列表,但它必须根据搜索表单对列表进行排序,以便首先显示包含最多/最佳匹配的文章,然后那些根本没有任何匹配项的将按字母顺序显示在最后。
我制作的这段代码运行良好,但我找不到按最多匹配/相关性对匹配项进行排序的方法。
这是我的代码:
$search = $_POST["searhwords"];
$search = preg_replace('/\s+/', ' ',$search);
$SearchQueryArray = str_replace(",", "", $search);
$SearchQueryArray = str_replace(" ", ",", $SearchQueryArray);
$SearchQueryArray = explode(',', $SearchQueryArray);
$outputtt1 = '';
$outputtt2 = '';
foreach ( $SearchQueryArray as $queryword )
{
$outputtt1 .= "title LIKE '%".$queryword."%' OR ";
$outputtt2 .= "title NOT LIKE '%".$queryword."%' AND ";
}
$outputtt1 = rtrim($outputtt1, ' OR ');
$outputtt2 = rtrim($outputtt2, ' AND ');
$query_for_result = mysql_query("SELECT * from mytable
WHERE ".$outputtt1."
union all
SELECT * from mytable
WHERE ".$outputtt2."
");
所以我需要找到一种方法来对包含匹配项的文章进行排序,以便首先对包含最多匹配项的文章进行排序。
你可以在这里看到我制作的脚本: http://www.genius-webdesign.com/test/querytest.php
【问题讨论】: