`
manjingtou
  • 浏览: 121100 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql 全文检索

阅读更多

mysql 全文检索,以前用postgresql 对全文检索支持很好,现在用MySQL所以临时看了一下。

 

参看官方文档

 

MySQL支持全文索引和搜索功能。MySQL中的全文索引类型FULLTEXT的索引。  FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR VARCHARTEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引, 其速度比把资料输入现有FULLTEXT索引的速度更为快。。。。。。。。。。。

 

MYSQL不支持InnoDB ,所以只能使用MyISAM类型表,创建完表

 

sql:

CREATE TABLE `fti_text` (
  `id` int(11) NOT NULL auto_increment,
  `table_name` varchar(50) default NULL COMMENT '表名',
  `pk` varchar(36) default NULL COMMENT '数据表字段主键',
  `type` varchar(20) default NULL COMMENT '检索类型',
  `company` varchar(36) default NULL COMMENT '公司',
  `content` text COMMENT '索引内容',
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `content` (`content`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='索引';

 

这样就创建一个索引表

检索的SQL:

SELECT * FROM `fti_text`    WHERE MATCH (content) AGAINST ('模拟好呀__');

 

我在这个表中随便模拟了10000条数据,但是怎么查询页查询不出来,不论查什么也查不出来,哦,忘记做分词处理了,以前用PostgreSQL的时候,他是会根据 空格来进行分词的,不支持中文的 ,所以分词的规则都是需要自己写分词的算法。具体的分词我是采用60万数据的词典,基本可以满足要求,而其可以自定义关键字。具体的分词算法就不多说了。

 

MySQL也应该有一套规则,看到官方的说明是这样的。

 

 

 

 

 

MySQL FULLTEXT 执行将任何单字字符原形 (字母、数字和下划线部分)的序列视为一个单词。这个序列或许也包含单引号 ('),但在一行中不会超过一个。 这意味着 aaa'bbb 会被视为一个单词,而 aaa''bbb则被视为2个单词。位于单词之前或其后的单引号会被FULLTEXT分析程序去掉; 'aaa'bbb' 会变成   aaa'bbb

FULLTEXT分析程序会通过寻找某些分隔符来确定单词的起始位置和结束位置,例如' ' (间隔符号) , (逗号)以及 . (句号 )。假如单词没有被分隔符分开,(例如在中文里 ), FULLTEXT 分析程序不能确定一个词的起始位置和结束位置。为了能够在这样的语言中向FULLTEXT 索引添加单词或其它编入索引的术语,你必须对它们进行预处理,使其被一些诸如"之类的任意分隔符分隔开。

一些词在全文搜索中会被忽略: 

  • 任何过于短的词都会被忽略。 全文搜索所能找到的词的默认最小长度为 4个字符。
  • 停止字中的词会被忽略。禁用词就是一个像“the” 或“some” 这样过于平常而被认为是不具语义的词。存在一个内置的停止字, 但它可以通过用户自定义列表被改写。

 

这么多要求,最要命的是4个字符这条,怎么会这样啊,我本来要做中英文汉语拼音的SUGGEST检索的,不能所有长度少于4个字符的(这样会增加我的分词的大小,即必须平凑成4个字符,而且中文也要四个汉字。。。。没有详细测试,具体可能没有搞清楚)。

只能想一些其他的办法,来迎合这个限制,这就需要做一个分词工具,通过特殊的符号来填充了。。。

 

 

分享到:
评论

相关推荐

    MYSQL高性能全文检索介绍-E文版

    全文检索是MySQL中的一个重要功能,它允许用户通过关键字搜索数据库中的文本内容,而不是仅仅依赖于精确匹配的列值。本篇文章将深入探讨MySQL的全文检索机制,以期帮助你构建高效的全文搜索引擎。 全文检索在信息...

    如何在MySQL中提高全文搜索效率

    在MySQL中提高全文搜索效率是优化数据库性能的关键步骤,尤其是对于那些处理大量文本数据的应用程序。MySQL内置的全文搜索引擎提供了一种高效且智能的方法来执行全文搜索,这比传统的LIKE语句方法更具优势。 首先,...

    Mysql全文搜索match against的用法

    MySQL全文搜索功能主要依赖于`MATCH()`和`AGAINST()`两个函数,用于在MyISAM表类型的字段上执行高效的文本搜索。以下是对标题和描述中所述知识点的详细说明: 1. **全文搜索的前提条件** - 表的存储引擎必须是...

    mysql实现全文检索

    MySQL全文检索是一种高效的数据搜索机制,它允许用户执行类似搜索引擎的查询,显著提高了在大量文本数据中寻找特定信息的速度。全文检索在MySQL中主要应用于MyISAM存储引擎,因为MyISAM支持对大表的数据快速读取,...

    MySQL全文搜索[文].pdf

    MySQL全文搜索是数据库管理系统MySQL中的一种高级特性,用于在大量文本数据中进行高效的数据检索。在MySQL 3.23.23版本之后,引入了全文索引(FULLTEXT),这是专门为MyISAM存储引擎设计的,以支持全文搜索功能。...

    mysql 全文搜索 技巧

    ### MySQL全文搜索技巧详解 #### 一、全文搜索概述 MySQL自版本3.23.23起开始支持全文索引和搜索功能。这一特性极大地增强了数据库查询的能力,特别是对于那些需要处理大量文本数据的应用场景而言。全文索引在...

    mysql 全文模糊查找 便捷解决方案

    MySQL作为广泛使用的开源关系型数据库,提供了多种方式进行全文搜索和模糊匹配。本篇将聚焦于MySQL的全文模糊查找及其便捷解决方案,并结合PHP的Unicode工具类进行讨论。 MySQL的全文索引和搜索功能允许我们快速...

    基于MySQL的全文检索系统的研究与应用.pdf

    【MySQL全文检索系统】MySQL是广泛应用的关系型数据库管理系统,尤其受到Linux社区的欢迎。尽管MySQL在数据存储和处理方面表现出色,但默认情况下并不支持中文全文检索。文章中提出了一种解决方案,即通过预处理...

    mysql 全文检索中文解决方法及实例代码

    4. 在进行搜索时,同样使用分词系统对搜索内容进行分词处理,然后利用MySQL的全文检索功能查询。 在上述实例代码中,创建了`ces_articles`数据表,并为`url`字段创建了全文索引。接着插入了几条包含中文和英文的...

    MySQL数据库进行中文全文检索的模拟实现方法.pdf

    在MySQL中,全文索引类型是FULLTEXT的索引,支持全文检索和搜索功能。但是,MySQL对中文字符集的支持较差,在设置数据库字符集为“gb2312”后,全文检索功能失效。 在原始方法中,MySQL数据库要支持全文检索,表...

    对设置 的关键字的全文检索,并且高亮显示

    在IT行业中,全文检索和高亮显示是两个重要的技术概念,尤其在信息检索、搜索引擎以及数据分析等领域广泛应用。这里我们将深入探讨这两个主题。 首先,我们来理解什么是全文检索。全文检索是一种从文档集合中查找...

    用Sphinx搭建MySQL中文全文搜索

    这时,我们可以借助第三方工具如Sphinx来增强MySQL的全文检索能力,实现高效且精准的中文搜索。本文将详细介绍如何使用Sphinx搭建MySQL的中文全文搜索。 首先,Sphinx是一个开源的全文搜索引擎,它的设计目标是提供...

    Solr3.6用DIH组件进行MySQL数据库全文索引部署包

    Solr3.6用DIH组件进行MySQL数据库全文索引部署包 完整的工程部署包 apache-solr-3.6.0.xml 放入apache-tomcat-7.0.27\conf\Catalina\localhost

    mysql全文搜索 sql命令的写法

    MySQL全文搜索是一种强大的功能,允许用户在数据库中执行自然语言搜索。在SQL中,全文搜索主要通过`MATCH()`和`AGAINST()`这两个关键词来实现。`MATCH()`函数用于指定要进行全文搜索的列,而`AGAINST()`则接收搜索...

Global site tag (gtag.js) - Google Analytics