diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c index 00f3ac8ff0a..ad541ee47ea 100644 --- a/myisam/ft_boolean_search.c +++ b/myisam/ft_boolean_search.c @@ -278,7 +278,7 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record) } } /* update queue */ - r=_mi_search(info, keyinfo, ftbw->word, ftbw->len, + r=_mi_search(info, keyinfo, ftbw->word, USE_WHOLE_KEY, /*ftbw->len,*/ SEARCH_BIGGER , keyroot); if (!r) { diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result index 8578b0eca47..733710504c6 100644 --- a/mysql-test/r/fulltext.result +++ b/mysql-test/r/fulltext.result @@ -1,40 +1,86 @@ +drop table if exists t1,t2,t3; +CREATE TABLE t1 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)); +INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'), +('Full-text indexes', 'are called collections'), +('Only MyISAM tables','support collections'), +('Function MATCH ... AGAINST()','is used to do a search'), +('Full-text search in MySQL', 'implements vector space model'); +select * from t1 where MATCH(a,b) AGAINST ("collections"); a b Only MyISAM tables support collections Full-text indexes are called collections +select * from t1 where MATCH(a,b) AGAINST ("indexes"); a b Full-text indexes are called collections +select * from t1 where MATCH(a,b) AGAINST ("indexes collections"); a b Full-text indexes are called collections Only MyISAM tables support collections +select * from t1 where MATCH(a,b) AGAINST("support -collections" IN BOOLEAN MODE); a b MySQL has now support for full-text search +select * from t1 where MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE); a b MySQL has now support for full-text search Full-text indexes are called collections Only MyISAM tables support collections +select * from t1 where MATCH(a,b) AGAINST("support +collections" IN BOOLEAN MODE); a b Full-text indexes are called collections Only MyISAM tables support collections +select * from t1 where MATCH(a,b) AGAINST("sear*" IN BOOLEAN MODE); a b MySQL has now support for full-text search Function MATCH ... AGAINST() is used to do a search Full-text search in MySQL implements vector space model +select * from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE); a b Only MyISAM tables support collections +select * from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE); a b MySQL has now support for full-text search Function MATCH ... AGAINST() is used to do a search Full-text search in MySQL implements vector space model +select * from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE); a b MySQL has now support for full-text search Full-text search in MySQL implements vector space model +delete from t1 where a like "MySQL%"; +drop table t1; +CREATE TABLE t1 ( +id int(11), +ticket int(11), +KEY ti (id), +KEY tit (ticket) +); +INSERT INTO t1 VALUES (2,3),(1,2); +CREATE TABLE t2 ( +ticket int(11), +inhalt text, +KEY tig (ticket), +fulltext index tix (inhalt) +); +INSERT INTO t2 VALUES (1,'foo'),(2,'bar'),(3,'foobar'); +select t1.id FROM t2 as ttxt,t1,t1 as ticket2 +WHERE ticket2.id = ttxt.ticket AND t1.id = ticket2.ticket and +match(ttxt.inhalt) against ('foobar'); id +select t1.id FROM t2 as ttxt,t1 INNER JOIN t1 as ticket2 ON +ticket2.id = ttxt.ticket +WHERE t1.id = ticket2.ticket and match(ttxt.inhalt) against ('foobar'); id +INSERT INTO t1 VALUES (3,3); +select t1.id FROM t2 as ttxt,t1 +INNER JOIN t1 as ticket2 ON ticket2.id = ttxt.ticket +WHERE t1.id = ticket2.ticket and +match(ttxt.inhalt) against ('foobar'); id 3 +show keys from t2; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment t2 1 tig 1 ticket A NULL NULL NULL t2 1 tix 1 inhalt A NULL 1 NULL FULLTEXT +show create table t2; Table Create Table t2 CREATE TABLE `t2` ( `ticket` int(11) default NULL, @@ -42,8 +88,24 @@ t2 CREATE TABLE `t2` ( KEY `tig` (`ticket`), FULLTEXT KEY `tix` (`inhalt`) ) TYPE=MyISAM +select * from t2 where MATCH inhalt AGAINST (NULL); ticket inhalt +select * from t2 where MATCH inhalt AGAINST ('foobar'); ticket inhalt 3 foobar +select * from t2 having MATCH inhalt AGAINST ('foobar'); ticket inhalt 3 foobar +CREATE TABLE t3 ( +ticket int(11), +inhalt text, +KEY tig (ticket), +fulltext index tix (inhalt) +); +select * from t2 where MATCH inhalt AGAINST (t2.inhalt); +Wrong arguments to AGAINST +select * from t2 where MATCH ticket AGAINST ('foobar'); +Can't find FULLTEXT index matching the column list +select * from t2,t3 where MATCH (t2.inhalt,t3.inhalt) AGAINST ('foobar'); +Wrong arguments to MATCH +drop table t1,t2,t3; diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test index d0ff789e38f..16b19381be4 100644 --- a/mysql-test/t/fulltext.test +++ b/mysql-test/t/fulltext.test @@ -83,8 +83,6 @@ CREATE TABLE t3 ( fulltext index tix (inhalt) ); ---error 1210 -select * from t2 where MATCH inhalt AGAINST (t2.inhalt); --error 1210 select * from t2 where MATCH inhalt AGAINST (t2.inhalt); --error 1191