4

我想得到一个结果并在最相关的基础上进行排序。这是一个 mysql 表

id     sentence  
1      website download free idm here  
2      get a free idmas5 from here  
3      check out this idm  
4      Here is other softwares

这是一个代码。

<?php
$word1 = 'download';
$word2 = 'idm';
mysql_query("SELECT * FROM phrase WHERE MATCH(sentence)   
AGAINST('+$word1 +$word2' IN BOOLEAN MODE"))
//above query does not work

我想从中得到结果MATCH.....AGAINST并对结果进行排序。
必需的结果。

1   website download free idm here  
3   check out this idm
2   get a free idmas5 from here

因为downloadidm都存在于第一个 id 中,所以它位于顶部,而在第三个 id 中只有idm存在,它位于第二个位置。在第二个 id 中, idmas5这个词是从idm开始的,所以它位于第三个位置。最后id 没有匹配的词所以不能显示。

我正在使用MATCH......AGAINST我认为这对它有好处。

4

1 回答 1

0

mysql_query()返回 上的结果集SELECT。所以你需要像这样分配结果

$result=mysql_query("SELECT * FROM phrase WHERE MATCH(sentence)   
AGAINST('+download +idm' IN BOOLEAN MODE"))

然后用类似的函数检索结果mysql_fetch_array()

while ($row = mysql_fetch_array($result)) {
    printf("ID: %s  SENTENCE: %s", $row[0], $row[1]);  
}
于 2013-04-15T06:52:17.367 回答