I am trying to speed up keyword searches using MATCH AGAINST instead of
like, but am getting unexpected results.
I had assumed that using 'WHERE MATCH fulltext(column.name) AGAINST
'searchterm' would produce the same results as 'WHERE column.name LIKE
'%searchterm%' but it doesn't seem to.
Actual queries:
First one returns 190 rows using:
SELECT affiliates.id,
affiliates.site_name,affiliates.site_desc,affiliates.company FROM affiliates
WHERE MATCH (affiliates.site_desc,affiliates.site_name,affiliates.company)
AGAINST ('shop');
Second one returns 1168 rows using:
SELECT affiliates.id,
affiliates.site_name,affiliates.site_desc,affiliates.company FROM affiliates
WHERE affiliates.site_name like '%shop%' OR affiliates.site_desc like
'%shop%' OR affiliates.company like '%shop%';
This is the index:
mysql> show index from affiliates;
+------------+------------+------------+--------------+-------------+-------
----+-------------+----------+--------+----------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Comment |
+------------+------------+------------+--------------+-------------+-------
----+-------------+----------+--------+----------+
| affiliates | 0 | PRIMARY | 1 | id | A
| 9019 | NULL | NULL | |
| affiliates | 0 | id | 1 | id | A
| 9019 | NULL | NULL | |
| affiliates | 1 | SEARCHTEXT | 1 | site_desc | A
| NULL | 1 | NULL | FULLTEXT |
| affiliates | 1 | SEARCHTEXT | 2 | site_name | A
| NULL | NULL | NULL | FULLTEXT |
| affiliates | 1 | SEARCHTEXT | 3 | company | A
| NULL | NULL | NULL | FULLTEXT |
+------------+------------+------------+--------------+-------------+-------
----+-------------+----------+--------+----------+
5 rows in set (0.00 sec)
This is the table:
mysql> show columns from affiliates;
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| id | int(20) | | PRI | NULL | auto_increment |
| contact_name | varchar(100) | | | | |
| company | varchar(75) | YES | | NULL | |
| address_1 | varchar(100) | YES | | NULL | |
| address_2 | varchar(100) | YES | | NULL | |
| city | varchar(25) | YES | | NULL | |
| county | varchar(25) | YES | | NULL | |
| post_code | varchar(12) | YES | | NULL | |
| country | varchar(25) | YES | | NULL | |
| email | varchar(75) | | | | |
| telephone | varchar(20) | YES | | NULL | |
| cheques | varchar(75) | YES | | NULL | |
| vat_reg | char(1) | YES | | 0 | |
| vat_type | char(1) | YES | | NULL | |
| vat_no | varchar(13) | YES | | NULL | |
| site_name | varchar(75) | | | | |
| URL | varchar(150) | YES | | NULL | |
| site_desc | text | YES | MUL | NULL | |
| primary_content | varchar(20) | YES | | NULL | |
| secondary_content | varchar(20) | YES | | NULL | |
| password | varchar(20) | | | | |
| refered | int(11) | YES | | NULL | |
| timestamp | datetime | YES | | NULL | |
| confirmed | tinyint(1) | YES | | 0 | |
| active | tinyint(1) | YES | | 1 | |
| confirmcode | varchar(25) | YES | | NULL | |
| signup_ip | varchar(15) | YES | | NULL | |
| email_list | tinyint(1) | YES | | 1 | |
+-------------------+--------------+------+-----+---------+----------------+
28 rows in set (0.00 sec)
Any thoughts please?
---------------------------
Peter Dunham
www.affiliatewindow.com
the future of web marketing
---------------------------
---------------------------------------------------------------------
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