在基本的 mysql 搜索引擎中按相关性排序



我在MySQL中有一个表。 它包含大约一百个网站的链接,标题,描述和关键字。并非每个网站都有关键字字段。我在我写的网络爬虫上爬 Apple.com,并索引了苹果网站的威严。

我将表格链接到我的搜索引擎,但我遇到了问题。 我使用的代码不按相关性排序。 我的意思是,如果用户在搜索引擎中输入"Apple",它将返回相当随机的结果。 如果我输入"购买iPad",iPad就会出现,而不是Apple Store。 我希望查询扫描所有字段以查看每个用户的次数输入在字段中,然后按最相关进行排名。*如果有冲突,ID越高者获胜...基本上。

顺便说一句,如果我在iPhone或iPad中输入,将显示正确的结果。 我对单独和在一起的术语有两个不同的查询,也很想知道如何将它们混合在一起以获得 1 个查询。

   Terms together:
   $query = " SELECT * FROM scan WHERE ";
   $terms = array_map('mysql_real_escape_string', $terms);
   $i = 0;
   foreach ($terms as $each) {
   if ($i++ !== 0) {
   $query .= "AND";   
   }
   $query.= "Match(title, description, keywords, link) Against ('".implode(' ', $terms )." in boolean mode);

     }

       Terms Seperate
       $query = " SELECT * FROM scan WHERE ";
   $terms = array_map('mysql_real_escape_string', $terms);
   $i = 0;
   foreach ($terms as $each) {
   if ($i++ !== 0) {
   $query .= "or";
   }
   $query.= "Match(title, description, keywords, link) Against ('".implode(' ', $terms )." in boolean mode);

    }

您需要为 MATCH 语句使用别名。

Select *, MATCH(tags) AGAINST ('search query' IN BOOLEAN MODE) as relevance
from scan HAVING relevance >0 ORDERY BY relevance DESC

相关内容

  • 没有找到相关文章

最新更新