| Bug #69932 | Fulltext search using words with apostrophe (') does not work on INNODB tables | ||
|---|---|---|---|
| Submitted: | 6 Aug 2013 4:01 | Modified: | 6 Sep 2013 16:11 |
| Reporter: | Chito Angeles | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: FULLTEXT search | Severity: | S2 (Serious) |
| Version: | 5.6.13 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | Full-text search INNODB BOOLEAN Apostrophe | ||
[6 Aug 2013 4:01]
Chito Angeles
[6 Aug 2013 12:50]
MySQL Verification Team
Thank you for the bug report.
C:\dbs>c:\dbs\5.6\bin\mysql -uroot --port=3560 --prompt="mysql 5.6 > "
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.14 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql 5.6 > create database dx;
Query OK, 1 row affected (0.01 sec)
mysql 5.6 > use dx
Database changed
mysql 5.6 > CREATE TABLE `catalog` (
-> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `title` text NOT NULL,
-> PRIMARY KEY (`id`),
-> FULLTEXT KEY `title_ftx` (`title`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (3.67 sec)
mysql 5.6 > /* Add records */
mysql 5.6 > INSERT INTO catalog(`title`) VALUES
-> ('A teacher\'s and textbook writers handbook on Japan'),
-> ('A teacher\'s handbook in health and science for grade III');
Query OK, 2 rows affected (0.05 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql 5.6 > SELECT * FROM catalog where match (title) against ('"teacher\'s handbook"' IN BOOLEAN MODE);
+----+----------------------------------------------------------+
| id | title |
+----+----------------------------------------------------------+
| 2 | A teacher's handbook in health and science for grade III |
+----+----------------------------------------------------------+
1 row in set (0.00 sec)
mysql 5.6 > SELECT * FROM catalog where match (title) against ('+teacher\'s +handbook' IN BOOLEAN MODE);
Empty set (0.00 sec)
mysql 5.6 > drop database dx;
Query OK, 1 row affected (0.42 sec)
mysql 5.6 > create database dx;
Query OK, 1 row affected (0.00 sec)
mysql 5.6 > use dx
Database changed
mysql 5.6 > CREATE TABLE `catalog` (
-> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `title` text NOT NULL,
-> PRIMARY KEY (`id`),
-> FULLTEXT KEY `title_ftx` (`title`)
-> ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.11 sec)
mysql 5.6 > INSERT INTO catalog(`title`) VALUES
-> ('A teacher\'s and textbook writers handbook on Japan'),
-> ('A teacher\'s handbook in health and science for grade III');
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql 5.6 > SELECT * FROM catalog where match (title) against ('"teacher\'s handbook"' IN BOOLEAN MODE);
+----+----------------------------------------------------------+
| id | title |
+----+----------------------------------------------------------+
| 2 | A teacher's handbook in health and science for grade III |
+----+----------------------------------------------------------+
1 row in set (0.00 sec)
mysql 5.6 > SELECT * FROM catalog where match (title) against ('+teacher\'s +handbook' IN BOOLEAN MODE);
+----+----------------------------------------------------------+
| id | title |
+----+----------------------------------------------------------+
| 1 | A teacher's and textbook writers handbook on Japan |
| 2 | A teacher's handbook in health and science for grade III |
+----+----------------------------------------------------------+
2 rows in set (0.00 sec)
[6 Sep 2013 16:11]
Paul DuBois
Noted in 5.6.14, 5.7.3 changelogs. Full-text search on InnoDB tables failed on searches for words containing apostrophes when using boolean operators.
[2 Dec 2015 12:44]
Daniel Price
Posted by developer: The changelog entry was updated as follows: Full-text search on InnoDB tables failed on searches for words containing apostrophes when using boolean operators. The innodb_ft_max_token_size maximum value was incorrectly defined as 252, which is the maximum byte length. The maximum innodb_ft_max_token_size value is now 84, which is the maximum character length. The change to innodb_ft_max_token_size is referenced in Bug #19595362.
