Hi,
why the heck is that: I need to search for email addresses through the fulltext search but I'm getting far too many hits.
This is how I create and fill my test table:
CREATE TABLE `search_test` (
`email` varchar(255) NOT NULL default '',
FULLTEXT KEY `index_1` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO search_test value("rudi.voeller@dfb.de");
INSERT INTO search_test value("rudi-voeller@dfb.de");
INSERT INTO search_test value("rudi---voeller@dfb.de");
INSERT INTO search_test value("rudi-ABC-voeller@dfb.de");
INSERT INTO search_test value("rudi_voeller@dfb.de");
INSERT INTO search_test value("rudi+voeller@dfb.de");
INSERT INTO search_test value("rudi(---)voeller@dfb.de");
INSERT INTO search_test value("rudi-A-voeller@dfb.de");
INSERT INTO search_test value("rudi>voeller@dfb.de");
INSERT INTO search_test value("rudi>>>>voeller@dfb.de");
INSERT INTO search_test value("rudi~~~voeller@dfb.de");
INSERT INTO search_test value("rudiavoeller@dfb.de");
INSERT INTO search_test value("rudi.voeller@dfb.de");
And this is my search query:
SELECT * FROM search_test WHERE MATCH (email) AGAINST ('"rudi.voeller@dfb.de"' IN BOOLEAN MODE);
Which gives me plenty of results:
+-------------------------+
| email |
+-------------------------+
|
rudi.voeller@dfb.de |
|
rudi-voeller@dfb.de |
|
rudi---voeller@dfb.de |
|
rudi+voeller@dfb.de |
| rudi(---)voeller@dfb.de |
| rudi>voeller@dfb.de |
| rudi>>>>voeller@dfb.de |
| rudi~~~voeller@dfb.de |
+-------------------------+
I would only expect the first line to be returned. Why am I getting the others as well? Has it something to do with the boolean mode? Or stopwords? Or the ft_boolean_syntax variable?
Thanks in advance for your replies,
Katrin