1

在我的查询中,我基本上是在尝试对这个搜索引擎使用全文搜索。当用户键入一个项目时,查询会查看我的 mysql 表中是否有相同的字段。

例如,假设用户输入 'iPad' 。我的表可能有“标题”、“描述”、“关键字”和“链接”字段:

我的桌子可能有:

 Apple, which contains the term iPad once in the description
 iOS 6, which contains iPad say twice, in the description and title (these are examples)
 and iPad, which contains the term 'iPad' in the link, description, title and keywords.

第三个结果显示排名第一,其次是排名2,然后是id 1。

但是假设我想输入“购买 iPad”,查询的功能完全相同,但会同时检查这两个词。如果没有标题/描述/链接/关键字无法在一个字段中找到它们的两个单词,那么它使用我上面显示的方法找到第一个单词的最高排名。

   Apple Store -> which contains the terms Buy and iPad in the title field

如果没有找到匹配项,只需确定每个单词的排名并以此进行排名。

$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') ";
}
4

0 回答 0