FaqLinea » History » Version 2
Simon, 07/26/2007 06:56 PM
1 | 1 | Simon | |
---|---|---|---|
2 | = FAQ Linea21 = |
||
3 | |||
4 | |||
5 | 2 | Simon | * [#db Base de données] |
6 | * [#mysqldb MySQL] |
||
7 | * [#ftsmysql Le moteur de recherche ne me retourne pas des enregistrements qui contiennent pourtant mon critère de sélection. Pourquoi?] |
||
8 | 1 | Simon | |
9 | 2 | Simon | |
10 | |||
11 | ---- |
||
12 | |||
13 | |||
14 | == Base de données == #db |
||
15 | |||
16 | === MySQL === #ftsmysql |
||
17 | |||
18 | ==== Q : Le moteur de recherche ne me retourne pas des enregistrements qui contiennent pourtant mon critère de sélection. Pourquoi? ==== #ftsmysql |
||
19 | 1 | Simon | |
20 | Tous les mots corrects de la liste et de la requête sont pondérés en fonction de leur importance dans la liste ou la requête. De cette façon, un mot présent dans de nombreuses lignes aura un poids faible (et peut être même un poids nul), car il a peu d'importance dans cette requête particulière. Au contraire, si le mot est rare, il recevra un poids fort. Le poids des mots sont alors rassemblés pour calculer la pertinence de la ligne. |
||
21 | |||
22 | Une telle technique fonctionne plus efficacement sur de grands volumes de données (en fait, elle est optimisée pour cela). Avec les toutes petites tables, la distribution des mots ne reflète par correctement leur valeur sémantique et ce modèle peut parfois produire des résultats étranges. |
||
23 | |||
24 | |||
25 | {{{ |
||
26 | |||
27 | mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('MySQL'); |
||
28 | Empty set (0.00 sec) |
||
29 | }}} |
||
30 | |||
31 | |||
32 | La recherche du mot MySQL ne donne aucun résultat dans l'exemple précédent, car il est présent dans plus de la moitié des lignes. Ainsi, il est considéré comme un mot à ignorer (un mot avec une valeur sémantique nulle). C'est le comportement le plus optimal : un langage de requêtes ne doit pas retourner chaque ligne d'une table de 1 Go. |
||
33 | |||
34 | Un mot qui est trouvé dans la moitié des enregistrements d'une table n'est pas efficace pour trouver les document appropriés. En fait, il trouvera sûrement beaucoup de documents inappropriés à la recherche. On sait tous que cela arrive souvent lorsqu'on recherche quelque chose sur internet en utilisant un moteur de recherche. C'est en suivant ce raisonnement que ces lignes se sont vues attribuer une valeur sémantique très basse dans ce cas particulier . |
||
35 | |||
36 | Le seuil de 50% a un impact significatif lorsque vous commencez à comprendre comment fonctionne l'index : si vous créez une table et insérez une ou deux lignes, chaque mot apparaîtra dans 50% des lignes. Résultat, la recherche ne trouvera rien. Assurez-vous d'insérer au moins trois lignes, et même plus. |
||
37 | |||
38 | |||
39 | ''extrait de la documentation MySQL :''[[BR]] |
||
40 | http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html |