I know the basic differences between the MyISAM and InnoDB engines. In MySQL 5.6 beta, InnoDB will support fulltext search. But, I wonder why previous versions of InnobDB didn't support FTS? My guess is because table storage format or the way that data is indexed. Sorry for my ignorance.
2 Answers
Back in the day, people have been clamoring for FTS for InnoDB and feverishly looking for workarounds. Sometime around January 2005, InnoDB found a sponsor to look for a developer.
I am sure one of the biggest gotchas that developers worried about was making FULLTEXT Searching (FTS) work in harmony with Transactions. This is especially needed since the tokenization for inserted strings is performed only at commit time, so a full-text search does not see the uncommitted data.
Please keep in mind that although there are tutorials on FTS with InnoDB, MySQL 5.6 still has a bug or two out there for InnoDB/FTS.
-
I highly appreciate your answer, but can you explain more about this sentence: "This is especially needed since the tokenization for inserted strings is performed only at commit time, so a full-text search does not see the uncommitted data." I don't really understand :).– hungneoxNov 28, 2011 at 16:38
-
2@eureka - if you insert into a string field, FTS won't recognize it until it's committed basically.– JNKNov 28, 2011 at 16:43
An alternative is to use two tables synchronized with each other with InnoDB and MyISAM. In the second table we could look through a function and return the data from the first table. There is an example here
-
Please post in english– user1822Mar 23, 2013 at 11:10
-
Juan if you can read the question in English you can probably do a better job answering in English than Google Translate with your Spanish (?): please review the answer and improve it, perhaps providing a native English language link? Mar 23, 2013 at 14:31