赞
踩
目录
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支持全文索引和搜索:
1.MySQL中的全文索引是FULLTEXT类型的索引。
2.全文索引只能与InnoDB或MyISAM表一起使用。并且只能为CHAR、VARCHAR或TEXT列创建。
3.MySQL提供了一个支持中文、日语和韩语(CJK)的内置全文ngram解析器,以及一个可安装的日语MeCab全文解析器插件。
“ngram全文解析器”和“MeCab全文解析器插件”概述了解析差异。
4.创建表时,可以在CREATE TABLE语句中给出FULLTEXT索引定义,或者稍后使用ALTER TABLE或CREATE INDEX添加。
5.对于大型数据集,将数据加载到没有FULLTEXT索引的表中,然后创建索引的速度要比将数据加载至具有现有FULLTEXT索引来的表快得多。
全文搜索使用MATCH()AGINST()语法执行。
MATCH()使用逗号分隔的列表来命名要搜索的列。
AGINST()使用一个要搜索的字符串和一个可选的修饰符,该修饰符指示要执行的搜索类型。
搜索字符串必须是在查询求值过程中保持不变的字符串值。
例如,这排除了表列,因为每行的列可能不同。
以前,MySQL允许在MATCH()中使用汇总列,但使用此构造的查询性能较差,结果不可靠。(这是因为MATCH()不是作为其参数的函数实现的,而是作为基表底层扫描中当前行的行ID的函数实现。)
从MySQL 8.0.28开始,MySQL不再允许此类查询;
更具体地说,任何匹配此处列出的所有条件的查询都将被ER_FULLTEXT_with_ROLLUP拒绝:
1.MATCH()出现在查询块的SELECT列表、GROUP BY子句、HAVING子句或ORDER BY子句中。
2.查询块包含GROUP BY。。。WITH ROLLUP子句。
3.调用MATCH()函数的参数是分组列之一。
以下是此类查询的一些示例:
- # MATCH() in SELECT list...
- SELECT MATCH (a) AGAINST ('abc') FROM t GROUP BY a WITH ROLLUP;
- SELECT 1 FROM t GROUP BY a, MATCH (a) AGAINST ('abc') WITH ROLLUP;
-
- # ...in HAVING clause...
- SELECT 1 FROM t GROUP BY a WITH ROLLUP HAVING MATCH (a) AGAINST ('abc');
-
- # ...and in ORDER BY clause
- SELECT 1 FROM t GROUP BY a WITH ROLLUP ORDER BY MATCH (a) AGAINST ('abc');
允许在WHERE子句中对汇总列使用MATCH()。
有三种类型:
自然语言搜索将搜索字符串解释为自然人类语言中的短语(自由文本中的短语)。除了双引号(“)字符外,没有特殊的运算符。适用停止字列表。
有关停止字列表的更多信息,请参阅“全文停止字”。
如果给定了IN NATURAL LANGUAGE MODE修饰符或没有给定修饰符,则全文搜索是自然语言搜索。有关更多信息,请参阅“自然语言全文搜索”。
【MySQL精通之路】全文搜索-自然语言全文搜索-CSDN博客
布尔搜索使用特殊查询语言的规则来解释搜索字符串。该字符串包含要搜索的单词。它还可以包含指定要求的运算符,以便单词在匹配的行中必须存在或不存在,或者应该比平时更高或更低地加权。某些常用词(停止语)会从搜索索引中省略,如果搜索字符串中存在,则不匹配。
IN BOOLEAN MODE修饰符指定布尔搜索。
有关详细信息,请参阅“布尔全文搜索”。
【MySQL精通之路】全文搜索-布尔型全文搜索-CSDN博客
查询扩展搜索是对自然语言搜索的修改。搜索字符串用于执行自然语言搜索。
然后,将搜索返回的最相关行中的单词添加到搜索字符串中,并再次进行搜索。
查询返回第二次搜索的行。
IN NATURAL LANGUAGE MODE WITH QUERY EXPANDION或WITH QUERY EXPANDION修饰符指定查询扩展搜索。
有关更多信息,请参阅“带查询扩展的全文搜索”。
其他知识点:
有关FULLTEXT查询性能的信息,请参阅“列索引”。
有关InnoDB FULLTEXT索引的更多信息,请参阅“InnoDB全文索引”。
有关全文约束的更多信息,请参阅“全文约束”。
myisam_ftdump实用程序转储MyISAM
全文索引的内容。这可能有助于调试全文查询。
请参阅“myisam_ftdump--显示全文索引信息”。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。