Hello,
Using a fulltext search on a products database I'm running into some
rather strange results.
I'm trying to get a list of matches sorted by relevance.
Here is the query:
select products_name,MATCH
(products_name,products_name,products_description,item) AGAINST
('necker knife') as score from products where MATCH
(products_name,products_name,products_description,item) AGAINST
('necker knife');
I get:
+--------------------------------+------------------+
| products_name | score |
+--------------------------------+------------------+
| Necker Knife | 17.7619809439664 |
| Foam Block | 4.38341880854866 |
| Foam Block | 4.64646846860058 |
| Horn Mounting Plate | 3.32702360881095 |
| Antelope Horn Mounting Plate | 3.30728558037349 |
| Elk Horn Mounting Plate | 3.32702360881095 |
| Moose Horn Mounting Plate | 3.30728558037349 |
| Steer Horn Mounting Plate | 3.30728558037349 |
| Right Hand Fish Skinning Knife | 6.85219410155259 |
| Skife Knife | 4.00494338668156 |
| Strait Blade | 3.66732441025881 |
| Extra Wide Lip Blade | 3.68254656880296 |
| Carbide Steels | 3.8344809977662 |
+--------------------------------+------------------+
The MySQL manual (http://www.mysql.com/doc/F/u/Fulltext_Search.html)
states:
When it is used (fulltext matching) in a WHERE clause the rows
returned are automatically sorted with relevance decreasing.
As you can see, it is *not* sorting by relevance properly (a score of
6.85 is listed under 3.30).
So, trying to force it to, I try this:
select products_name,MATCH
(products_name,products_name,products_description,item) AGAINST
('necker knife') as score from products where MATCH
(products_name,products_name,products_description,item) AGAINST
('necker knife') order by score;
(added "order by score") And get this:
+--------------------------------+------------------+
| products_name | score |
+--------------------------------+------------------+
| Right Hand Fish Skinning Knife | 6.85219410155259 |
| Foam Block | 4.64646846860058 |
| Foam Block | 4.38341880854866 |
| Skife Knife | 4.00494338668156 |
| Carbide Steels | 3.8344809977662 |
| Cheeker Tool | 3.76766426959713 |
| Extra Wide Lip Blade | 3.68254656880296 |
| Strait Blade | 3.66732441025881 |
| Elk Horn Mounting Plate | 3.32702360881095 |
| Horn Mounting Plate | 3.32702360881095 |
| Antelope Horn Mounting Plate | 3.30728558037349 |
| Moose Horn Mounting Plate | 3.30728558037349 |
| Steer Horn Mounting Plate | 3.30728558037349 |
+--------------------------------+------------------+
As you can see, it now sorts by score, but has knocked off the highest
result!
I'm using MySQL 3.23.32 on a Redhat 7.1 Linux box.
Thanks in advance for any help,
Cheers,
-Jason
--
.--- .- ... --- -. / -- --- .-. . .... --- ..- ... .
Jason Morehouse
[EMAIL PROTECTED]
Netconcepts LTD
Auckland, New Zealand
Linux - keyword: uptime
---------------------------------------------------------------------
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