This doesn't surprise me. I haven't looked at the code, but I'd bet that double-quoted, exact phrase matches are handled the usual way by mysql: First, do a regular fulltext search (using the index) to find rows with your search words, then check the found rows to see if they exactly contain the double-quoted string. Your result seems to show that no additional constraints are placed on the second step, or at least that the beginning of the phrase doesn't have to be a word boundary.

Hence, "verandover andover" does not match "overandover andover" because it doesn't conatain the word "verandover". It would have passed the second step, as it does contain the quoted string.

On the other hand, "andover andover" does match "overandover andover" because the fulltext search is looking for "andover", which it finds, and the exact phrase "andover andover" can be found in the row.

If I'm right, I'd expect "andover and" to match, but "andover ando" would not.

Whether it should work this way is a philosophical matter, I suppose.

Michael

David Beavan wrote:
I have identified a strange case that seems to give false matches when performing a FULLTEXT IN BOOLEAN search.

Please consider the following:

---
CREATE TABLE `fttest` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `text` text,
 PRIMARY KEY  (`id`),
 FULLTEXT KEY `text_index` (`text`)
) TYPE=MyISAM;

INSERT INTO `fttest` (`id`, `text`) VALUES("1", "overandover andover");

---
SELECT *
FROM fttest
WHERE MATCH (text) AGAINST ('"overandover andover"' IN BOOLEAN MODE)

Matches - OK as expected

---
SELECT *
FROM fttest
WHERE MATCH (text) AGAINST ('"verandover andover"' IN BOOLEAN MODE)

Does not match - OK as expected

---
SELECT *
FROM fttest
WHERE MATCH (text) AGAINST ('"andover andover"' IN BOOLEAN MODE)

Does match - I would expect this NOT to. Am I missing something or is this erroneous?


Thanks Dave

_________________________________________________________________
Tired of 56k? Get a FREE BT Broadband connection http://www.msn.co.uk/specials/btbroadband





--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to