Skip to content

Commit

Permalink
Bug #25873310 FULLTEXT SEARCH CAN NOT FIND WORD WHICH CONTAINS "," OR
Browse files Browse the repository at this point in the history
"."

PROBLEM

Ngram fts parser used to parse "," and "." as words and were tokenized
which is wrong and uneccessary.

FIX

Disallow "." and "," as words to be tokenized (as is the case with
native parser) and that would solve the bug issue which provides
different results in case of natural / boolean search.

Reviewed by: Jimmy Yang<Jimmy.Yang@oracle.com>
RB: 19191
  • Loading branch information
Aakanksha Verma committed Apr 9, 2018
1 parent e8374b7 commit c1a5784
Show file tree
Hide file tree
Showing 4 changed files with 147 additions and 91 deletions.
26 changes: 13 additions & 13 deletions mysql-test/suite/innodb_fts/include/ngram.inc
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ SELECT * FROM articles_1 WHERE
SELECT * FROM articles_1 WHERE
MATCH(title_varchar) AGAINST('nd');
SELECT * FROM articles_1 WHERE
MATCH(title_varchar) AGAINST('0,');
MATCH(title_varchar) AGAINST('50');
SELECT * FROM articles_1 WHERE
MATCH(title_text) AGAINST('se');
SELECT * FROM articles_1 WHERE
Expand Down Expand Up @@ -201,7 +201,7 @@ SHOW CREATE TABLE articles;

# natural language search
SELECT * FROM articles WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('救命');
SELECT * FROM articles WHERE
MATCH(c2) AGAINST('我幾');

Expand Down Expand Up @@ -258,15 +258,15 @@ SELECT * FROM articles WHERE
MATCH(j3) AGAINST(">の長" IN BOOLEAN MODE);

SELECT * FROM articles WHERE
MATCH(k2) AGAINST('-Ch +요*');
MATCH(k2) AGAINST('-Ch +해요');

SELECT * FROM articles WHERE
MATCH(e1) AGAINST("row1 -row" IN BOOLEAN MODE) ;


# Query expansion mode
SELECT * FROM articles WHERE
MATCH(c1) AGAINST('啊! ' WITH QUERY EXPANSION);
MATCH(c1) AGAINST('命啊' WITH QUERY EXPANSION);
SELECT * FROM articles WHERE
MATCH(j2) AGAINST('やっそう' WITH QUERY EXPANSION);
SELECT * FROM articles WHERE
Expand Down Expand Up @@ -299,7 +299,7 @@ SELECT COUNT(*) FROM articles t1,articles t2
WHERE MATCH(t2.j1,t2.j3) AGAINST("右さ +の長" IN BOOLEAN MODE)
AND t1.seq = t2.seq ;
SELECT COUNT(*) FROM articles t1,articles t2
WHERE MATCH(t1.c1) AGAINST("啊! ")
WHERE MATCH(t1.c1) AGAINST("命啊")
AND t1.seq != t2.seq
AND MATCH(t2.k2) AGAINST("국말" IN BOOLEAN MODE) ;
SELECT COUNT(*) FROM articles t1,articles t2
Expand Down Expand Up @@ -331,7 +331,7 @@ ALTER TABLE 名字 ADD FULLTEXT INDEX con7 (j3) WITH PARSER ngram;
ALTER TABLE 名字 ADD FULLTEXT INDEX con8 (행운을빈다) WITH PARSER ngram;
ALTER TABLE 名字 ADD FULLTEXT INDEX con9 (e1) WITH PARSER ngram;
SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
SELECT * FROM 名字 WHERE
MATCH(さようなら,j3) AGAINST('やっ');
SELECT * FROM 名字 WHERE
Expand Down Expand Up @@ -389,7 +389,7 @@ INSERT INTO 名字 (c1,c2,c3,さようなら,j2,j3,행운을빈다,k2,e1) VALUES
('救命啊!','火啊! 你好','生日快樂 ','雨季','雨が降りそう つやってみよう','雨雲','저분은 영어를 잘 합니다','저는 서울에서 살고 있습니다.','recording test');

SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
SELECT * FROM 名字 WHERE
MATCH(さようなら,j3) AGAINST('やっ');
SELECT * FROM 名字 WHERE
Expand All @@ -415,7 +415,7 @@ ANALYZE TABLE 名字;
-- enable_result_log

SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
SELECT * FROM 名字 WHERE
MATCH(さようなら,j3) AGAINST('やっ');
SELECT * FROM 名字 WHERE
Expand Down Expand Up @@ -446,7 +446,7 @@ INSERT INTO 名字 (c1,c2,c3,さようなら,j2,j3,행운을빈다,k2,e1) VALUES
('救命啊!','火啊! 你好','生日快樂 ','雨季','雨が降りそう つやってみよう','雨雲','저분은 영어를 잘 합니다','저는 서울에서 살고 있습니다.','recording test');

SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
SELECT * FROM 名字 WHERE
MATCH(さようなら,j3) AGAINST('やっ');
SELECT * FROM 名字 WHERE
Expand Down Expand Up @@ -507,7 +507,7 @@ ANALYZE TABLE 名字;
-- enable_result_log

SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
SELECT * FROM 名字 WHERE
MATCH(さようなら,j3) AGAINST('やっ');
SELECT * FROM 名字 WHERE
Expand Down Expand Up @@ -561,7 +561,7 @@ ANALYZE TABLE 名字;
-- enable_result_log

SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
SELECT * FROM 名字 WHERE
MATCH(さようなら,j3) AGAINST('やっ');
SELECT * FROM 名字 WHERE
Expand Down Expand Up @@ -608,10 +608,10 @@ ANALYZE TABLE 名字;
-- enable_result_log

SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
UPDATE 名字 SET c1 = '你好嗎?' WHERE MATCH(c2) AGAINST('啊!');
SELECT * FROM 名字 WHERE
MATCH(c1) AGAINST('啊! ');
MATCH(c1) AGAINST('命啊');
DELETE FROM 名字 WHERE
MATCH(さようなら,j3) AGAINST("てみ -雨が" IN BOOLEAN MODE);
SELECT * FROM 名字 WHERE
Expand Down
Loading

0 comments on commit c1a5784

Please sign in to comment.