MySQL支持全文索引和搜索功能。MySQL中的全文索引类型FULLTEXT的索引。 FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR、 VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引, 其速度比把资料输入现有FULLTEXT索引的速度更为快。
关于全文搜索的限制列表,请参见 12.7.4节,“全文限定条件”.
全文搜索同MATCH()函数一起执行。
mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles (title,body) VALUES
-> ('MySQL Tutorial','DBMS stands for DataBase ...'),
-> ('How To Use MySQL Well','After you went through a ...'),
-> ('Optimizing MySQL','In this tutorial we will show ...'),
-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
-> ('MySQL vs. YourSQL','In the following database comparison ...'),
-> ('MySQL Security','When configured properly, MySQL ...');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)
下面的例子则更加复杂。询问返回相关值,同时对行按照相关性渐弱的顺序进行排序。为实现这个结果,你应该两次指定 MATCH(): 一次在 SELECT 列表中而另一次在 WHERE子句中。这不会引起额外的内务操作,原因是MySQL 优化程序注意到两个MATCH()调用是相同的,从而只会激活一次全文搜索代码。
mysql> SELECT id, body, MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root') AS score
-> FROM articles WHERE MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root');
+----+-------------------------------------+-----------------+
| id | body | score |
+----+-------------------------------------+-----------------+
| 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
| 6 | When configured properly, MySQL ... | 1.3114095926285 |
+----+-------------------------------------+-----------------+
分享到:
相关推荐
全文检索是MySQL中的一个重要功能,它允许用户通过关键字搜索数据库中的文本内容,而不是仅仅依赖于精确匹配的列值。本篇文章将深入探讨MySQL的全文检索机制,以期帮助你构建高效的全文搜索引擎。 全文检索在信息...
在MySQL中提高全文搜索效率是优化数据库性能的关键步骤,尤其是对于那些处理大量文本数据的应用程序。MySQL内置的全文搜索引擎提供了一种高效且智能的方法来执行全文搜索,这比传统的LIKE语句方法更具优势。 首先,...
MySQL全文搜索功能主要依赖于`MATCH()`和`AGAINST()`两个函数,用于在MyISAM表类型的字段上执行高效的文本搜索。以下是对标题和描述中所述知识点的详细说明: 1. **全文搜索的前提条件** - 表的存储引擎必须是...
MySQL全文检索是一种高效的数据搜索机制,它允许用户执行类似搜索引擎的查询,显著提高了在大量文本数据中寻找特定信息的速度。全文检索在MySQL中主要应用于MyISAM存储引擎,因为MyISAM支持对大表的数据快速读取,...
MySQL全文搜索是数据库管理系统MySQL中的一种高级特性,用于在大量文本数据中进行高效的数据检索。在MySQL 3.23.23版本之后,引入了全文索引(FULLTEXT),这是专门为MyISAM存储引擎设计的,以支持全文搜索功能。...
### MySQL全文搜索技巧详解 #### 一、全文搜索概述 MySQL自版本3.23.23起开始支持全文索引和搜索功能。这一特性极大地增强了数据库查询的能力,特别是对于那些需要处理大量文本数据的应用场景而言。全文索引在...
MySQL作为广泛使用的开源关系型数据库,提供了多种方式进行全文搜索和模糊匹配。本篇将聚焦于MySQL的全文模糊查找及其便捷解决方案,并结合PHP的Unicode工具类进行讨论。 MySQL的全文索引和搜索功能允许我们快速...
【MySQL全文检索系统】MySQL是广泛应用的关系型数据库管理系统,尤其受到Linux社区的欢迎。尽管MySQL在数据存储和处理方面表现出色,但默认情况下并不支持中文全文检索。文章中提出了一种解决方案,即通过预处理...
4. 在进行搜索时,同样使用分词系统对搜索内容进行分词处理,然后利用MySQL的全文检索功能查询。 在上述实例代码中,创建了`ces_articles`数据表,并为`url`字段创建了全文索引。接着插入了几条包含中文和英文的...
在MySQL中,全文索引类型是FULLTEXT的索引,支持全文检索和搜索功能。但是,MySQL对中文字符集的支持较差,在设置数据库字符集为“gb2312”后,全文检索功能失效。 在原始方法中,MySQL数据库要支持全文检索,表...
Solr3.6用DIH组件进行MySQL数据库全文索引部署包 完整的工程部署包 apache-solr-3.6.0.xml 放入apache-tomcat-7.0.27\conf\Catalina\localhost
这时,我们可以借助第三方工具如Sphinx来增强MySQL的全文检索能力,实现高效且精准的中文搜索。本文将详细介绍如何使用Sphinx搭建MySQL的中文全文搜索。 首先,Sphinx是一个开源的全文搜索引擎,它的设计目标是提供...
MySQL全文搜索是一种强大的功能,允许用户在数据库中执行自然语言搜索。在SQL中,全文搜索主要通过`MATCH()`和`AGAINST()`这两个关键词来实现。`MATCH()`函数用于指定要进行全文搜索的列,而`AGAINST()`则接收搜索...
与MySQL结合使用,Elasticsearch可以实现高效、复杂的全文搜索。MySQL是流行的关系型数据库管理系统,它存储结构化数据,而Elasticsearch则擅长处理非结构化的搜索需求。 在配置Elasticsearch进行全文搜索前,确保...