zoukankan      html  css  js  c++  java
  • MySQL模糊查询全文索引

    MySQL模糊查询全文索引

    全文索引
    ---------------------------------------------------------------
    # MySQL-Front Dump 2.5
    #
    # Host: localhost Database: test
    # --------------------------------------------------------
    # Server version 4.0.12-nt-log

    #
    # Table structure for table 't3'
    #
    CREATE TABLE `t3` (
    `name` char(12) NOT NULL default '',
    `name2` char(12) NOT NULL default '',
    FULLTEXT KEY `name` (`name`,`name2`)
    ) TYPE=MyISAM;
     
    #
    # Dumping data for table 't3'
    #
    INSERT INTO `t3` (`name`, `name2`) VALUES("1", "安换岚缮");
    INSERT INTO `t3` (`name`, `name2`) VALUES("2", "不会吧");
    INSERT INTO `t3` (`name`, `name2`) VALUES("3", "不会吧1");
    INSERT INTO `t3` (`name`, `name2`) VALUES("4", "不会吧 1");
    INSERT INTO `t3` (`name`, `name2`) VALUES("5", "真的不会吧");
    INSERT INTO `t3` (`name`, `name2`) VALUES("6", "真的 不会吧");
     
    mysql> SELECT * FROM t3;
    +------+-------------+
    ¦ name ¦ name2 ¦
    +------+-------------+
    ¦ 1 ¦ 安换岚缮 ¦
    ¦ 2 ¦ 不会吧 ¦
    ¦ 3 ¦ 不会吧1 ¦
    ¦ 4 ¦ 不会吧 1 ¦
    ¦ 5 ¦ 真的不会吧 ¦
    ¦ 6 ¦ 真的 不会吧 ¦
    +------+-------------+
    6 rows in set (0.01 sec)
    # 查找词 "不会吧"
    mysql> SELECT * FROM t3 WHERE MATCH (name,name2)
    -> AGAINST ('不会吧'IN BOOLEAN MODE);
    +------+-------------+
    ¦ name ¦ name2 ¦
    +------+-------------+
    ¦ 2 ¦ 不会吧 ¦
    ¦ 4 ¦ 不会吧 1 ¦
    ¦ 6 ¦ 真的 不会吧 ¦
    +------+-------------+
    3 rows in set (0.00 sec)
    # 查找以词 "不会吧" 开头的任意词句
    mysql> SELECT * FROM t3 WHERE MATCH (name,name2)
    -> AGAINST ('不会吧*' IN BOOLEAN MODE);
    +------+-------------+
    ¦ name ¦ name2 ¦
    +------+-------------+
    ¦ 2 ¦ 不会吧 ¦
    ¦ 4 ¦ 不会吧 1 ¦
    ¦ 6 ¦ 真的 不会吧 ¦
    ¦ 3 ¦ 不会吧1 ¦
    +------+-------------+
    4 rows in set (0.01 sec)
    # 查找以词 "不会吧" 开头的任意词句 并 去除词 "真的"
    mysql> SELECT * FROM t3 WHERE MATCH (name,name2)
    -> AGAINST ('+不会吧* -真的' IN BOOLEAN MODE);
    +------+----------+
    ¦ name ¦ name2 ¦
    +------+----------+
    ¦ 2 ¦ 不会吧 ¦
    ¦ 4 ¦ 不会吧 1 ¦
    ¦ 3 ¦ 不会吧1 ¦
    +------+----------+
    3 rows in set (0.00 sec)

    在上例中,
    我们可以看出 MySQL 的全文索引对双字节处理的支持还不太好,
    ¦ 5 ¦ 真的不会吧 ¦
    这一行记录始终未能查询出来,
    这是因为在西文中词是以一个空格为分隔的,
    :(
    希望在将来的版本中
    MySQL 对此能有所改进

    而用正则表达式也是会有问题的,

    # 查找词 "不会吧"
    mysql> SELECT * FROM t3 WHERE name2 REGEXP "不会吧";
    +------+-------------+
    ¦ name ¦ name2 ¦
    +------+-------------+
    ¦ 1 ¦ 安换岚缮 ¦
    ¦ 2 ¦ 不会吧 ¦
    ¦ 3 ¦ 不会吧1 ¦
    ¦ 4 ¦ 不会吧 1 ¦
    ¦ 5 ¦ 真的不会吧 ¦
    ¦ 6 ¦ 真的 不会吧 ¦
    +------+-------------+
    6 rows in set (0.00 sec)

    # 查找以词 "不会吧" 开头的
    mysql> SELECT * FROM t3 WHERE name2 REGEXP "^不会吧";
    +------+----------+
    ¦ name ¦ name2 ¦
    +------+----------+
    ¦ 2 ¦ 不会吧 ¦
    ¦ 3 ¦ 不会吧1 ¦
    ¦ 4 ¦ 不会吧 1 ¦
    +------+----------+
    3 rows in set (0.00 sec)

    # 查找以词 "不会吧" 结束的
    mysql> SELECT * FROM t3 WHERE name2 REGEXP "不会吧$";
    +------+-------------+
    ¦ name ¦ name2 ¦
    +------+-------------+
    ¦ 2 ¦ 不会吧 ¦
    ¦ 5 ¦ 真的不会吧 ¦
    ¦ 6 ¦ 真的 不会吧 ¦
    +------+-------------+
    3 rows in set (0.00 sec)
  • 相关阅读:
    C语言初学者代码中的常见错误与瑕疵(22)
    ANSI C (83)和87 ANSI C 这两个标准存在么?
    常见的认证
    python入门(一)
    Altium Designer重装后图标都变白板或都变一样的解决方法
    转:关于S参数的一些理解
    射频与微波测量之S参数
    驻波比
    PCB特征阻抗计算
    函数的形参(非引用形参、指针形参、引用形参)
  • 原文地址:https://www.cnblogs.com/fengju/p/6174120.html
Copyright © 2011-2022 走看看