Bug #70240 match against search in hindi
Submitted: 4 Sep 2013 11:37 Modified: 5 Mar 2014 8:08
Reporter: himanshu sharma Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: FULLTEXT search Severity:S3 (Non-critical)
Version:5.5.37 OS:Linux (redhat 7.8)
Assigned to: CPU Architecture:Any
Tags: hindi search

[4 Sep 2013 11:37] himanshu sharma
Description:
We migrated our replication DB servers from 5.0.95 to 5.5.21
All the applications were running fine, except that one of the functionality which was for searching text in hindi was not working.
It is a MYIsam table, having FULLTEXT index over three columns all having same character sets and collations.
Its been 6 days, since we did almost everything that was possible for all the possible solutions that we could. While against all odds , English search was working perfectly fine for the same columns.

Query being used ::
select SQL_CACHE match(keywords,title,description) against ('जिसकी वजह से जीत' in boolean mode) as score,title, DATE_FORMAT(datetime, '%M %e,%Y %h:%i %p') AS crDateTime,datetime, storyid, filename, DATE(datetime) as storydate, channel_slno, keywords,description from "table_name"  match(keywords,title,description) against ('जिसकी वजह से जीत' in boolean mode) ORDER BY score DESC,datetime DESC

How to repeat:
you can install the same version that i have...
i.e. 5.5.21 and the try to search on a table having fulltext index over column.
It doesn't give you the correct results but indeed results all the data.

Also,you can try it by changing several parameters like ::

character_set_client
character_set_server
character_set_results
[4 Sep 2013 13:10] Miguel Solorzano
Thank you for the bug report. Please provide a complete test case: create table/insert data/query/actual result set/expected result set. Thanks.
[5 Sep 2013 6:53] himanshu sharma
TEST CASE :::

CREATE TABLE -
CREATE TABLE `DNA_Files_2011_Keywords` (`channel_slno` int(11) NOT NULL default '0',`cat_id` int(11) NOT NULL default '0',`filename` varchar(100) character set latin1 NOT NULL default '',`title` longtext NOT NULL,`short_headline` varchar(255) NOT NULL default '',`description` text NOT NULL,`timestamp` varchar(100) character set latin1 NOT NULL default '',`imgflag` int(2) NOT NULL default '0',`keywords` text NOT NULL,`slno` int(11) NOT NULL auto_increment,`storyid` int(11) NOT NULL default '0',`edit_flag` char(1) character set latin1 NOT NULL default '',
PRIMARY KEY  (`slno`),
KEY `cat_id` (`cat_id`),KEY `filename` (`filename`),KEY `storyid` (`storyid`),KEY `edit_flag` (`edit_flag`),
FULLTEXT KEY `keywords` (`keywords`),
FULLTEXT KEY `title` (`title`),
FULLTEXT KEY `Keywords_BrowserTitle` (`keywords`,`description`),
FULLTEXT KEY `keywords_2` (`keywords`,`title`,`description`)) ENGINE=MyISAM;

INSERT RECORDS -

INSERT INTO `DNA_Files_2011_Keywords` (`channel_slno`, `cat_id`, `filename`, `title`, `short_headline`, `description`, `timestamp`, `imgflag`, `keywords`, `slno`, `storyid`, `edit_flag`) VALUES
(521, 6794, 'c-181-964279-NOR', 'गेटअप देखकर तो ऐसा नहीं लगा जो थोड़ी देर बाद यहां होने लगा!', 'गेटअप देखकर तो ऐसा नहीं...', '', '0.32991300_1378361522', 0, '', 5576220, 8814438, '3'),
(521, 4182, 'ENT-BOL-have-sex-when-you-want-to-have-it-parineeti-chopra-4366577-PHO', 'परिणीति ने कहा, ''जब आपका मन करे तब करें सेक्स''', 'परिणीति ने कहा, ''जब आपका मन करे तब करें सेक्स''', 'have sex when you want to have it: parineeti chopra', '0.51735300_1378360735', 1, 'have sex when you want to have it: parineeti chopra,parineeti chopra,shuddh desi romance', 5576219, 8814437, '1'),
(521, 1719, 'c-16-571504-NOR', 'ब्वायफ्रेंड को बर्थ डे पर गिफ्ट में लेने दी न्यूड फोटो और फिर...', 'ब्वायफ्रेंड को बर्थ डे पर...', '', '0.01959400_1378361402', 0, '', 5576218, 8814435, '3'),
(521, 1719, 'c-16-571503-NOR', 'एमबीबीएस की 64 मैनेजमेंट सीटों के लिए काउंसिलिंग कल', 'एमबीबीएस की 64 मैनेजमेंट...', '', '0.68523000_1378361281', 0, '', 5576217, 8814434, '3'),
(521, 1719, 'c-16-571502-NOR', 'जिम्मेदारों ने कहा मेडिकल कॉलेज चलाए सुपर स्पेशियालिटी विभाग', 'जिम्मेदारों ने कहा मेडिकल...', '', '0.48085100_1378361162', 0, '', 5576216, 8814432, '3'),
(521, 2859, 'MAT-RAJ-OTH-c-195-91748-NOR', 'चूल्हा भभका महिला झुलसी', 'चूल्हा भभका महिला झुलसी', 'चूल्हा भभका महिला झुलसीभीलवाड़ा. मंडपिया रेलवे स्टेशन क्षेत्र में बुधवार रात एक हादसे में महिला झुलस गई। उसे...', '0.05030800_1378340042', 0, 'Rajasthan,Bhilwara,Bhilwara,Gulabpura', 5576056, 8814136, '1');

QUERY -

select SQL_CACHE match(keywords,title,description) against ('+चूल्हा +भभका +महिला +झुलसी' in boolean mode) as score,title, DATE_FORMAT(datetime,'%M %e,%Y %h:%i %p') AS datetimeformat, storyid, filename, channel_slno,description,keywords from DNA_Files_2011_Keywords where edit_flag='1' AND match(keywords,title,description) against ('+चूल्हा +भभका +महिला +झुलसी' in boolean mode) ORDER BY score DESC,datetime DESC LIMIT 0, 10

ACTUAL RESULT -

Total Numrows : 0 

EXPECTED RESULT -

चूल्हा भभका महिला झुलसी

http://www.bhaskar.com/article-srh/MAT-RAJ-OTH-c-195-91748-NOR.html

चूल्हा भभका महिला झुलसीभीलवाड़ा. मंडपिया रेलवे स्टेशन क्षेत्र में बुधवार रात एक हादसे में महिला झुलस गई। उसे...

Keywords : Rajasthan,Bhilwara,Bhilwara,Gulabpura

In the inserted values, the junk characters that we see are actually characters in Hindi. It has been converted to Utf8 unicode format.
This same test case , if executed on mysql 5.0.95 runs perfectly fine. While doesn't give any result when upgraded to mysql 5.5 or 5.6 series.

Please help and suggest.

Thanks,
Himanshu
[5 Mar 2014 8:08] Umesh Shastry
Hello Himanshu,

Thank you for the bug report.
Verified as described.

Thanks,
Umesh
[5 Mar 2014 8:09] Umesh Shastry
// How to repeat

// 5.5.37 -- affected

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.37    |
+-----------+
1 row in set (0.00 sec)

mysql>  show global variables like '%char%';
+--------------------------+----------------------------------------------------+
| Variable_name            | Value                                              |
+--------------------------+----------------------------------------------------+
| character_set_client     | utf8                                               |
| character_set_connection | utf8                                               |
| character_set_database   | utf8                                               |
| character_set_filesystem | binary                                             |
| character_set_results    | utf8                                               |
| character_set_server     | utf8                                               |
| character_set_system     | utf8                                               |
| character_sets_dir       | /data/ushastry/server/mysql-5.5.37/share/charsets/ |
+--------------------------+----------------------------------------------------+
8 rows in set (0.00 sec)

mysql> DROP TABLE IF EXISTS DNA_Files_2011_Keywords;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE `DNA_Files_2011_Keywords` (
    ->   `channel_slno` int(11) NOT NULL DEFAULT '0',
    ->   `cat_id` int(11) NOT NULL DEFAULT '0',
    ->   `filename` varchar(100) NOT NULL DEFAULT '',
    ->   `title` longtext NOT NULL,
    ->   `short_headline` varchar(255) NOT NULL DEFAULT '',
    ->   `description` mediumtext NOT NULL,
    ->   `timestamp` varchar(100) NOT NULL DEFAULT '',
    ->   `imgflag` int(2) NOT NULL DEFAULT '0',
    ->   `keywords` mediumtext NOT NULL,
    ->   `slno` int(11) NOT NULL AUTO_INCREMENT,
    ->   `storyid` int(11) NOT NULL DEFAULT '0',
    ->   `edit_flag` char(1) NOT NULL DEFAULT '',
    ->   PRIMARY KEY (`slno`),
    ->   KEY `cat_id` (`cat_id`),
    ->   KEY `filename` (`filename`),
    ->   KEY `storyid` (`storyid`),
    ->   KEY `edit_flag` (`edit_flag`),
    ->   FULLTEXT KEY `keywords` (`keywords`),
    ->   FULLTEXT KEY `title` (`title`),
    ->   FULLTEXT KEY `Keywords_BrowserTitle` (`keywords`,`description`),
    ->   FULLTEXT KEY `keywords_2` (`keywords`,`title`,`description`)
    -> ) ENGINE=MyISAM DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 0 rows affected (0.01 sec)

mysql> ALTER TABLE DNA_Files_2011_Keywords CONVERT TO CHARACTER SET utf8  COLLATE utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> INSERT INTO `DNA_Files_2011_Keywords` (`channel_slno`, `cat_id`, `filename`, `title`, `short_headline`, `description`, `timestamp`, `imgflag`, `keywords`, `slno`, `storyid`, `edit_flag`) VALUES (521, 6794, 'c-181-964279-NOR', 'चूल्हा भभका महिला झुलसी', 'चूल्हा भभका महिला झुलसी', 'भीलवाड़ा. मंडपिया रेलवे स्टेशन क्षेत्र में बुधवार रात एक हादसे में महिला झुलस गई। उसे जिला अस्पताल में भर्ती कराया गया। एमजीएच चौकी के मुताबिक, मूलतया पटना, बिहार हाल मंडपिया स्टेशन निवासी सुनील पाण्डेय की पत्नी माला बुधवार रात चूल्हे पर खाना बना रही थी। तभी उसकी बेटी ताक में रखी केरोसिन से भरी पीपी उतारने लगी, जो उसके हाथ से छूटकर चूल्हे पर जा गिरी। केरोसिन गिरने से चूल्हा भभक गया और माला के कपड़ों ने आग पकड़ ली। इससे माला 70 फीसदी झुलस गई।
    '> किशोरी का अपहरण भीलवाड़ा. चंद्रशेखर आजाद नगर से एक किशोरी को अगवा कर बंधक बनाने का मामला प्रताप नगर पुलिस ने दर्ज किया है। पुलिस ने बताया कि कांवाखेड़ा की एक किशोरी 24 जुलाई को चंद्रशेखर आजाद नगर क्षेत्र में बकरियां चराने गई, जो घर नहीं लौटी। परिजनों ने उसकी तलाश की तो पता चला कि किशोरी का सुरेश ओड ने अपहरण कर लिया। ','0.32991300_1378361522', 0, '', 5576220, 8814438, '3');
Query OK, 1 row affected (0.00 sec)

mysql> select SQL_CACHE match(keywords,title,description) against ('+चूल्हा +भभका +महिला +झुलसी' in boolean mode) as score,title, DATE_FORMAT(timestamp,'%M %e,%Y %h:%i %p') AS datetimeformat, storyid, filename, channel_slno,description,keywords from DNA_Files_2011_Keywords where edit_flag='3' AND match(keywords,title,description) against ('+भभक' in boolean mode) ORDER BY score DESC,timestamp DESC LIMIT 0, 10;
Empty set (0.00 sec)

mysql>
[5 Mar 2014 8:10] Umesh Shastry
/// Works as expected

mysql> select version();
+------------+
| version()  |
+------------+
| 5.0.96-log |
+------------+
1 row in set (0.00 sec)

mysql> show global variables like '%char%';
+--------------------------+----------------------------------------------------------+
| Variable_name            | Value                                                    |
+--------------------------+----------------------------------------------------------+
| character_set_client     | utf8                                                     |
| character_set_connection | utf8                                                     |
| character_set_database   | utf8                                                     |
| character_set_filesystem | binary                                                   |
| character_set_results    | utf8                                                     |
| character_set_server     | utf8                                                     |
| character_set_system     | utf8                                                     |
| character_sets_dir       | /data/ushastry/server/mysql-5.0.96/share/mysql/charsets/ |
+--------------------------+----------------------------------------------------------+

mysql> DROP TABLE IF EXISTS DNA_Files_2011_Keywords;
mysql> CREATE TABLE `DNA_Files_2011_Keywords` (
  `channel_slno` int(11) NOT NULL DEFAULT '0',
  `cat_id` int(11) NOT NULL DEFAULT '0',
  `filename` varchar(100) NOT NULL DEFAULT '',
  `title` longtext NOT NULL,
  `short_headline` varchar(255) NOT NULL DEFAULT '',
  `description` mediumtext NOT NULL,
  `timestamp` varchar(100) NOT NULL DEFAULT '',
  `imgflag` int(2) NOT NULL DEFAULT '0',
  `keywords` mediumtext NOT NULL,
  `slno` int(11) NOT NULL AUTO_INCREMENT,
  `storyid` int(11) NOT NULL DEFAULT '0',
  `edit_flag` char(1) NOT NULL DEFAULT '',
  PRIMARY KEY (`slno`),
  KEY `cat_id` (`cat_id`),
  KEY `filename` (`filename`),
  KEY `storyid` (`storyid`),
  KEY `edit_flag` (`edit_flag`),
  FULLTEXT KEY `keywords` (`keywords`),
  FULLTEXT KEY `title` (`title`),
  FULLTEXT KEY `Keywords_BrowserTitle` (`keywords`,`description`),
  FULLTEXT KEY `keywords_2` (`keywords`,`title`,`description`)
) ENGINE=MyISAM DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

// Not required but still altering
mysql> ALTER TABLE DNA_Files_2011_Keywords CONVERT TO CHARACTER SET utf8  COLLATE utf8_general_ci;

mysql> INSERT INTO `DNA_Files_2011_Keywords` (`channel_slno`, `cat_id`, `filename`, `title`, `short_headline`, `description`, `timestamp`, `imgflag`, `keywords`, `slno`, `storyid`, `edit_flag`) VALUES (521, 6794, 'c-181-964279-NOR', 'चूल्हा भभका महिला झुलसी', 'चूल्हा भभका महिला झुलसी', 'भीलवाड़ा. मंडपिया रेलवे स्टेशन क्षेत्र में बुधवार रात एक हादसे में महिला झुलस गई। उसे जिला अस्पताल में भर्ती कराया गया। एमजीएच चौकी के मुताबिक, मूलतया पटना, बिहार हाल मंडपिया स्टेशन निवासी सुनील पाण्डेय की पत्नी माला बुधवार रात चूल्हे पर खाना बना रही थी। तभी उसकी बेटी ताक में रखी केरोसिन से भरी पीपी उतारने लगी, जो उसके हाथ से छूटकर चूल्हे पर जा गिरी। केरोसिन गिरने से चूल्हा भभक गया और माला के कपड़ों ने आग पकड़ ली। इससे माला 70 फीसदी झुलस गई।
किशोरी का अपहरण भीलवाड़ा. चंद्रशेखर आजाद नगर से एक किशोरी को अगवा कर बंधक बनाने का मामला प्रताप नगर पुलिस ने दर्ज किया है। पुलिस ने बताया कि कांवाखेड़ा की एक किशोरी 24 जुलाई को चंद्रशेखर आजाद नगर क्षेत्र में बकरियां चराने गई, जो घर नहीं लौटी। परिजनों ने उसकी तलाश की तो पता चला कि किशोरी का सुरेश ओड ने अपहरण कर लिया। ','0.32991300_1378361522', 0, '', 5576220, 8814438, '3');

mysql> select SQL_CACHE match(keywords,title,description) against ('+चूल्हा +भभका +महिला +झुलसी' in boolean mode) as score,title, DATE_FORMAT(timestamp,'%M %e,%Y %h:%i %p') AS datetimeformat, storyid, filename, channel_slno,description,keywords from DNA_FiC LIMIT 0, 10\Gds where edit_flag='3' AND match(keywords,title,description) against ('+भभक' in boolean mode) ORDER BY score DESC,timestamp DESC
*************************** 1. row ***************************
         score: 1
         title: चूल्हा भभका महिला झुलसी
datetimeformat: NULL
       storyid: 8814438
      filename: c-181-964279-NOR
  channel_slno: 521
   description: भीलवाड़ा. मंडपिया रेलवे स्टेशन क्षेत्र में बुधवार रात एक हादसे में महिला झुलस गई। उसे जिला अस्पताल में भर्ती कराया गया। एमजीएच चौकी के मुताबिक, मूलतया पटना, बिहार हाल मंडपिया स्टेशन निवासी सुनील पाण्डेय की पत्नी माला बुधवार रात चूल्हे पर खाना बना रही थी। तभी उसकी बेटी ताक में रखी केरोसिन से भरी पीपी उतारने लगी, जो उसके हाथ से छूटकर चूल्हे पर जा गिरी। केरोसिन गिरने से चूल्हा भभक गया और माला के कपड़ों ने आग पकड़ ली। इससे माला 70 फीसदी झुलस गई।
किशोरी का अपहरण भीलवाड़ा. चंद्रशेखर आजाद नगर से एक किशोरी को अगवा कर बंधक बनाने का मामला प्रताप नगर पुलिस ने दर्ज किया है। पुलिस ने बताया कि कांवाखेड़ा की एक किशोरी 24 जुलाई को चंद्रशेखर आजाद नगर क्षेत्र में बकरियां चराने गई, जो घर नहीं लौटी। परिजनों ने उसकी तलाश की तो पता चला कि किशोरी का सुरेश ओड ने अपहरण कर लिया।
      keywords:
[13 Mar 2014 5:22] Umesh Shastry
Bug #72010 Marked as duplicate of this..
[13 Mar 2014 9:00] Peter Laursen
If Hindi is affected it is possible (likely?) that also affected are:
1) Other Indian languages (Bengali, Gujarati, Maharati, Tamil etc.)
2) Urdu (also widespreadedly used in India in addition to being the largest language in Pakistan)
3) South East Asian languages like Thai, Khmer 
...