Bonjour à tous,
Je réalise un moteur de recherche interne pour notre site et je bloque sur la pertinence des résultats.
Ma table :
Quelques données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE `itmmaster` ( `itmref` varchar(20) NOT NULL, `itmdes1` varchar(30) DEFAULT NULL, `itmdes2` varchar(30) DEFAULT NULL, `itmdes3` varchar(30) DEFAULT NULL, `eancod` varchar(13) DEFAULT NULL, `itmsta` int DEFAULT NULL, `rplitm` varchar(20) DEFAULT NULL, `xsap` varchar(13) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ALTER TABLE `itmmaster` ADD PRIMARY KEY (`itmref`); ALTER TABLE `itmmaster` ADD FULLTEXT KEY `itmref` (`itmref`,`eancod`,`itmdes1`,`itmdes2`,`itmdes3`);
Ma requête de recherche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 INSERT INTO `itmmaster` (`itmref`, `itmdes1`, `itmdes2`, `itmdes3`, `eancod`, `itmsta`, `rplitm`, `xsap`) VALUES ('2-87057', 'CLES MIXTES DIAM 7', '', '', '3253562870575', 6, ' ', ''), ('2-87058', 'CLES MIXTES DIAM 8', '', '', '3253562870582', 6, '4-87058', ''), ('2-87066', 'CLES MIXTES DIAM 6', '', '', '3253562870667', 6, ' ', ''), ('2-87069', 'CLES MIXTES DIAM 9', '', '', '3253562870698', 6, ' ', ''), ('2-87070', 'CLES MIXTES DIAM 10', '', '', '3253562870704', 6, ' ', ''), ('2-87071', 'CLES MIXTES DIAM 11', '', '', '3253562870711', 6, ' ', ''), ('2-87072', 'CLES MIXTES DIAM 12', '', '', '3253562870728', 6, ' ', ''), ('2-87073', 'CLES MIXTES DIAM 13', '', '', '3253562870735', 6, ' ', ''), ('2-87074', 'CLES MIXTES DIAM 14', '', '', '3253562870742', 6, ' ', ''), ('2-87075', 'CLES MIXTES DIAM 15', '', '', '3253562870759', 6, ' ', '');
Résultat de ma requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT *, MATCH(itmdes1, itmdes2, itmdes3, itmref, eancod) AGAINST ('cles mixtes diam 12') AS result FROM itmmaster WHERE MATCH(itmdes1, itmdes2, itmdes3, itmref, eancod) AGAINST ('cles mixtes diam 12') AND itmsta IN (1,2,3,4,6) ORDER BY result DESC
itmref itmdes1 itmdes2 itmdes3 eancod itmsta rplitm xsap result 2-87057 CLES MIXTES DIAM 7 3253562870575 6 11.24915885925293 2-87058 CLES MIXTES DIAM 8 3253562870582 6 4-87058 11.24915885925293 2-87066 CLES MIXTES DIAM 6 3253562870667 6 11.24915885925293 2-87069 CLES MIXTES DIAM 9 3253562870698 6 11.24915885925293 2-87070 CLES MIXTES DIAM 10 3253562870704 6 11.24915885925293 2-87071 CLES MIXTES DIAM 11 3253562870711 6 11.24915885925293 2-87072 CLES MIXTES DIAM 12 3253562870728 6 11.24915885925293 2-87073 CLES MIXTES DIAM 13 3253562870735 6 11.24915885925293 2-87074 CLES MIXTES DIAM 14 3253562870742 6 11.24915885925293 2-87075 CLES MIXTES DIAM 15 3253562870759 6 11.24915885925293 2-87076 CLES MIXTES DIAM 16 3253562870766 6 11.24915885925293
La recherche m'a bien renvoyé des résultats mais toute les lignes ont le même poids alors que je m'attendais à voir la ligne
En premier puis les autres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 2-87072 | CLES MIXTES DIAM 12 | | | 3253562870728 | 6 | | | 11.24915885925293
Je ne peux pas passer en mode boolean car la recherche doit être effective sur la colonne itmref et malheureusement les données contiennent des -.
Est-ce que je suis passé à côté d'une subtilité ?
Merci d'avance.
Partager