Hi,

You are doing everything fine, however, soundex is not a perfect system and does not 
always work. It does simplify some types of queries. But in the vast majority of cases 
I don't think that it is worth the bother. 

It doesn't actually link all the same sounding sirnames, if there were a system like 
that life would be nice and simple, however (and correct me if I am wrong) there isn't 
one. Soundex was an attempt and it doesn't really work. It is used by the US 
government but it just means you have to search under a couple of different soundex 
codes rather than searching under 8 or 9 different spellings.

See this example.

mysql> select soundex('morton'), soundex('moreton'), soundex('morten');
+-------------------+--------------------+-------------------+
| soundex('morton') | soundex('moreton') | soundex('morten') |
+-------------------+--------------------+-------------------+
| M635              | M635               | M635              |
+-------------------+--------------------+-------------------+
1 row in set (0.00 sec)

mysql> select soundex('callaghan'), soundex('callahan'), soundex('calahan');
+----------------------+---------------------+--------------------+
| soundex('callaghan') | soundex('callahan') | soundex('calahan') |
+----------------------+---------------------+--------------------+
| C425                 | C450                | C450               |
+----------------------+---------------------+--------------------+
1 row in set (0.00 sec)
mysql>


I hope this helps.

Richard


 >>  I want to use SOUNDEX for name queries, but I don't 
 >>  seem to be doing it correctly. 

 >>  As a test, I made a small table and popluated it 
 >>  with my name. My goal is to be able to find my name 
 >>  'Callaghan', with its most common misspelling 
 >>  'Callahan'. 

 >>  I've read the MySQL doc, so I know how to actually 
 >>  invoke soundex at the mysql prompt. I read an 
 >>  article that said soundex queries move more quickly 
 >>  if you add a column for the soundex.

 >>  Thus:

 >>  CREATE TABLE sound (
 >>  id tinyint(3) NOT NULL auto_increment,
 >>  name varchar(100) default NULL,
 >>  sound varchar(100) default NULL,
 >>  PRIMARY KEY  (id)
 >>  ) TYPE=MyISAM;

 >>  select soundex('Callaghan');
 >>  result = C425

 >>  INSERT INTO sound VALUES (1, 'Callaghan', 'C425');

 >>  Simple enough. Now, I expected all three of the 
 >>  following queries to return a value. 

 >>  select id from sound where sound = 
 >>  soundex('Callaghan');
 >>  returns 1 records

 >>  select id from sound where sound = 
 >>  soundex('Callahan');
 >>  returns 0 records

 >>  select id from sound where name = 
 >>  soundex('Callaghan');
 >>  returns 0 records

 >>  I'm missing something obvious here, but I've read 
 >>  the doc and I'm not sure what's wrong.

 >>  -- 
 >>  Get your free email from www.linuxmail.org 




 >>  Powered by Outblaze

 >>  ---------------------------------------------------------------------
 >>  Before posting, please check:
 >>  http://www.mysql.com/manual.php   (the manual)
 >>  http://lists.mysql.com/           (the list archive)

 >>  To request this thread, e-mail <[EMAIL PROTECTED]>
 >>  To unsubscribe, e-mail
 >>  <[EMAIL PROTECTED]>
 >>  Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to