mysql mi jako chudno sortira rezultate full-text searcha, kao sto se moze videti iz prilozenog:
Kôd:
SELECT a3a.ID, a3a.Title,
MATCH (a3a.Title) AGAINST ('florida car insurance') AS relevance
FROM articles3 AS a3a
WHERE
MATCH (a3a.Title) AGAINST ('florida car insurance')
LIMIT 10
+--------+----------------------------------------+-----------------+
| ID | Title | relevance |
+--------+----------------------------------------+-----------------+
| 193584 | Florida Health Insurance | 10.545636177063 |
| 281813 | Florida Insurance Lawyers | 10.545636177063 |
| 214760 | Florida Health Insurance | 10.545636177063 |
| 210643 | Florida Car Insurance Requirements | 10.545636177063 |
| 214756 | Florida Medical Insurance | 10.545636177063 |
| 193583 | Florida Health Insurance Quote | 10.42969417572 |
znaci rezultat koji sadzi sve 3 trazene reci ima isti relevance kao nalsov koji sadrzi samo 2 od 3 reci. Ovo sam probao na 2 servera na kojima stavljen mysql 4.1.20 i na oba s eidenticno ponasa...
Takodje postoji i nesto cudno oko boolean searcha, jer:
Kôd:
mysql> SELECT a3a.ID, a3a.Title
-> FROM articles3 AS a3a
-> WHERE
-> MATCH (a3a.Title) AGAINST ('+florida +car +insurance' IN BOOLEAN MODE)
-> LIMIT 10;
+--------+------------------------------------------------------------------------+
| ID | Title |
+--------+------------------------------------------------------------------------+
| 193582 | Florida Group Health Insurance |
| 193583 | Florida Health Insurance Quote |
| 193584 | Florida Health Insurance |
| 193585 | Florida Individual Health Insurance |
| 193586 | Florida Small Business Health Insurance |
| 193587 | Florida State Health Insurance |
| 193632 | Affordable Florida Health Insurance |
| 193716 | An Overview of Health Insurance Coverage for Individuals in Florida |
| 193828 | Regulations Concerning Long Term Care Insurance in Florida |
| 194058 | Florida Flood Insurance: How Residents Can Obtain and Benefit from It |
+--------+------------------------------------------------------------------------+
10 rows in set (0.04 sec)
znaci iako ima pluseve ipred svih reci on ipak vrati i recorde koij ne sadrze "car" u sebi, iako u mysql manualu lepo pise:
Citat:
A leading plus sign indicates that this word must be present in each row that is returned.
|
opet, ovo je probano na 2 servera (mysql 4.1.20) znaci nije problem u ostecenim indexima ili tako nesto, negoje neki bug u fulltext searchu...
jel zna neko slucajno isplati li se da upgradujem mysql na 5-cu, da li tamo full-text search radi bolje?