• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: MySQL 8 中文手册 -> MySQL 函数和运算符

    全文搜索

    MATCH(col1,col2,...)AGAINST(expr[search_modifier])

    search_modifier:
      {
           IN NATURAL LANGUAGE MODE
         | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
         | IN BOOLEAN MODE
         | WITH QUERY EXPANSION
      }
    

    MySQL支持全文索引和搜索:

    • MySQL中的全文索引是type的索引FULLTEXT
    • 全文索引只能使用InnoDBMyISAM表格,并且只能用于创建CHARVARCHARTEXT列。
    • MySQL提供了一个内置的全文ngram解析器,该解析器支持中文,日文和韩文(CJK),以及一个用于日语的可安装的MeCab全文分析器插件。“ ngram全文解析器”和“ MeCab全文解析器插件”中概述了解析差异。
    • FULLTEXT索引定义可以在被给予CREATE TABLE的语句中创建表时,或者稍后使用添加ALTER TABLECREATE INDEX
    • 对于大型数据集,将数据加载到没有FULLTEXT索引的表中然后再创建索引比将数据加载到具有现有FULLTEXT索引的表中要快得多。

    使用MATCH()... AGAINST语法执行全文搜索。MATCH()以逗号分隔的列表命名要搜索的列。AGAINST接受要搜索的字符串和可选修饰符,该修饰符指示要执行的搜索类型。搜索字符串必须是在查询评估期间恒定的字符串值。例如,这排除了表列,因为每行的表列可能不同。

    全文搜索分为三种:

    • 自然语言搜索将搜索字符串解释为自然人类语言中的短语(自由文本中的短语)。除双引号(“)字符外,没有特殊的运算符。适用停用词列表。有关停用词列表的更多信息,请参见“全文停用词”。

      如果指定了IN NATURAL LANGUAGE MODE修饰符或未指定修饰符,则全文搜索是自然语言搜索。有关更多信息,请参见“自然语言全文本搜索”。

    • 布尔搜索使用特殊查询语言的规则解释搜索字符串。该字符串包含要搜索的单词。它还可以包含指定要求的运算符,以使匹配行中的单词必须存在或不存在,或者其权重应高于或低于平常。某些常见单词(停用词)将从搜索索引中省略,并且如果出现在搜索字符串中则不匹配。该IN BOOLEAN MODE修饰符指定一个布尔搜索。有关更多信息,请参见“布尔全文本搜索”。
    • 查询扩展搜索是对自然语言搜索的修改。搜索字符串用于执行自然语言搜索。然后,将搜索返回的最相关行中的单词添加到搜索字符串中,然后再次执行搜索。该查询返回第二个搜索中的行。该IN NATURAL LANGUAGE MODE WITH QUERY EXPANSIONWITH QUERY EXPANSION修改指定的查询扩展搜索。有关更多信息,请参见“具有查询扩展的全文本搜索”。

    有关FULLTEXT查询性能的信息,请参见“列索引”。

    有关InnoDBFULLTEXT索引的更多信息,请参见“ InnoDB FULLTEXT索引”。

    “全文限制”中列出了全文搜索的约束。

    myisam_ftdump工具转储的内容MyISAM全文索引。这对于调试全文查询可能会有所帮助。请参见“myisam_ftdump-显示全文索引信息”。