全文搜索是一种用于的搜索技术,会检查文档中的所有单词是否与搜索条件完全匹配。
FTS搜索技术通常由诸如 google , mozilla ,或 bing 等搜索引擎使用。所有这些搜索引擎将数据从网站收集到数据库中并根据关键字进行搜索。它在网站上为博客,新闻,电子商务等网站进行了强大的搜索结果。
关于mysql中的全文搜索的重要点:
MySQL使用以下语法执行全文搜索:
MATCH (col1, col2, col3, and so on) AGAINST (expression [search_modifier])
在此语法中,无涯教程将首先指定 match ()函数,其中包含由逗号分隔的列名列表。然后,对函数的采用一个字符串,用于使用可选修饰符来搜索,以指示执行了哪种搜索类型。 search_modifier 可以是自然语言模式或自然语言模式,具有查询扩展或布尔模式或查询扩展。
以下是MySQL全文搜索的一些重要函数:
使用CREATE TABLE语句创建新表时定义全文索引,如下所示:
CREATE TABLE table_name( column_name1 data type, column_name2 data type, ....., FULLTEXT (column1, column2,..) );
这里 table_name 是新表的名称, column_name 是列的名称, fulltext 表示包含的全文索引括号中的逗号分隔列名单列表。
以下语句创建一个名为Articles的新表。此表具有包含文章内容列的全文索引:
mysql> CREATE TABLE Articles ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(220), body TEXT, FULLTEXT (title, body) );
接下来,无涯教程将填写该表中的记录:
mysql> INSERT INTO Articles VALUES ('0', 'MySQL Tutorial', 'MySQL tutorial provides basic and advanced concepts for beginners ...'), ('0', 'How To Install MySQL', 'Here we will learn how we to download and install MySQL ...'), ('0', 'Optimising MySQL', 'In this tutorial we will show ...'), ('0', 'MySQL vs. MongoDB', 'In the following database comparison ...'), ('0', 'MySQL Versions', 'This section shows all MySQL versions ...');
如果在where子句中使用match()函数,则首先使用最高相关性值自动对返回的行进行排序。基于单词数,唯一单词的数量,集合中的单词的总数和包含特定字的行的数量来计算相关性。
mysql> SELECT * FROM articles WHERE MATCH (title, body) AGAINST ('tutorial');
以下是执行了针对字符串"tutorial"的全文搜索的输出:
让无涯教程看到另一个例子,即显示如何显式检索:
mysql> SELECT id, MATCH (title, body) AGAINST ('tutorial') FROM Articles;
以下是未返回的行的输出:
MySQL还提供ALTER TABLE语句,可在现有表上创建全文索引。以下语法更清楚地说明了它:
ALTER TABLE table_name ADD FULLTEXT (column1, column2,?)
在此语法中,需要首先指定表名以创建索引。其次,使用添加fulltext子句将全文索引定义为一个或多个列。
例如,有一个名为 books 的表,其中包含列ID,title,content和author。现在可以定义content和author列的全文索引,如下所示:
mysql> ALTER TABLE books ADD FULLTEXT (content, author)
无涯教程还可以使用Create Index语句为现有表创建全文索引。以下语法更清楚地说明了它:
CREATE FULLTEXT INDEX index_name ON table_name (idx_column1, idx_column2,...)
例如,有一个名为 Office 的表,其中包含列 conderd_line1 和 conderd_line2 。现在,可以使用以下语句为这些列创建全文索引:
mysql> CREATE FULLTEXT INDEX address ON office (address_line1, address_line2)
mysql提供了从表中删除全文索引的命令。可以通过使用下面给出的alter table drop index语句来执行此操作:
ALTER TABLE table_name DROP INDEX index_name;
在此语法中,无涯教程首先指定了表的名称,然后指定了全文索引名称,后跟 drop index 子句。
例如,执行以下语句将永久删除"offices"表中的address索引:
mysql> ALTER TABLE offices DROP INDEX address;
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)