自然语言全文搜索将搜索字符串解释为自然人语言中的文字短语,不支持特殊字符。如果未指定任何修改器或指定自然语言模式修饰符时,则默认启用。
可以使用 match()和against()函数来执行自然语言全文搜索。match()函数用于指定要执行搜索的列名,并且against()函数确定要使用的搜索字符串。
让无涯教程首先创建一个表 post ,具有全文索引,包括 title 和descriptions列。这是查询:
mysql> CREATE TABLE Posts ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), descriptions TEXT, FULLTEXT (title, descriptions) ) ENGINE = InnoDB;
接下来,将记录填充到此表中以解释全文搜索:
mysql> INSERT INTO Posts VALUES ('0', 'MySQL Tutorial', 'MySQL tutorial provides basic and advanced concepts for beginners ...'), ('0', 'Java Regex', 'Java Regex is a regular expression for searching or manipulating strings. ...'), ('0', 'MySQL Workbench','It is a GUI tool used to work with database ....'), ('0', 'What is Java', 'Java is a platform-indipendent, object-oriented and secure language ...'), ('0', 'MySQL Versions', 'This section shows all MySQL versions ...');
现在将使用match()和against()函数执行全文搜索,如下所示:
mysql> SELECT * FROM Posts WHERE MATCH (title, descriptions) AGAINST ('Java');
以下是已经对字符串"tutorial"进行了全文搜索的输出:
如果要获取包含 java和 Workbench 术语,无涯教程可以使用以下语法如下:
mysql> SELECT * FROM Posts WHERE MATCH (title, descriptions) AGAINST ('Java, Workbench');
执行该语句,将获得以下结果:
知道默认AGAINST()函数在自然语言模式搜索修饰语中使用;这就是为什么可以省略它在查询中。在上面的语句中使用自然语言模式搜索修饰程序,并查看结果:
mysql> SELECT * FROM Posts WHERE MATCH (title, descriptions) AGAINST ('Java, Workbench' IN NATURAL LANGUAGE MODE);
执行查询,将获得与以前相同的结果:
如果想要计算匹配的匹配数,无涯教程可以使用如下所示:
mysql> SELECT COUNT(*) FROM Posts WHERE MATCH (title, descriptions) AGAINST ('Java, Workbench' IN NATURAL LANGUAGE MODE);
这是结果:
链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-natural-language-fulltext-search.html
来源:LearnFk无涯教程网
如果想明确检索相关性值,需要使用以下语法。此语句不会排序返回的行,因为它既不使用条款的WHERE NOR顺序:
mysql> SELECT id, MATCH (title, descriptions) AGAINST ('Java, Workbench' IN NATURAL LANGUAGE MODE) FROM Posts;
执行查询,将获得所需的结果:
如果想要来检查文本相关性并根据递减相关性排序行,可以使用如下所示:
mysql> SELECT id, title, MATCH (title, descriptions) AGAINST ('Java, Workbench' IN NATURAL LANGUAGE MODE) AS relevance_score FROM Posts WHERE MATCH (title, descriptions) AGAINST ('Java, Workbench' IN NATURAL LANGUAGE MODE);
执行查询,无涯教程将获得所需的结果:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)