Bonjour,
Je suis actuellement en train de faire des recherches fulltext sous PostgreSQL mais j'aimerais savoir si c'est normal que je n'obtienne pas le même score pour une même requête.
Par exemple, ces 3 requêtes me retournent 2 lignes avec les mêmes résultats sauf le score qui est différent.
Requête 1: Sous MySQL, j'obtiens des scores de 5.26 et 10.62.
Requête 2: Sous PostgreSQl, j'obtiens 0.3 et 0.1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT MATCH (sem_trk_name,sem_trk_label,sem_trk_city_start,sem_trk_city_end) AGAINST ("waz*" IN BOOLEAN MODE) AS score, trk_id AS id, trk_name AS name, trk_filename AS filename, trk_duration AS duration, trk_rate AS rate, trk_length AS length, trk_view AS view, trk_veh_id AS veh_id, trk_mem_id AS mem_id, trk_map_type FROM track, search_match WHERE MATCH(sem_trk_name,sem_trk_label,sem_trk_city_start,sem_trk_city_end) AGAINST ("waz*" IN BOOLEAN MODE) AND sem_trk_id=trk_id AND trk_status=0 GROUP BY trk_id ORDER BY score DESC
Requête 3: Toujours sous PostgreSQL mais avec la fonction ts_rank() au lieu de ts_rank_cv(), j'obtiens 0.08 et 0.06
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT ts_rank_cd(tsv, to_tsquery('waz:*')) AS score, trk_id AS id, trk_name AS name, trk_filename AS filename, trk_duration AS duration, trk_rate AS rate, trk_length AS length, trk_view AS view, trk_veh_id AS veh_id, trk_mem_id AS mem_id, trk_map_type FROM search_match, track_group WHERE to_tsquery('waz:*') @@ tsv AND sem_trk_id=trk_id AND trk_status=0 ORDER BY score DESC
De plus, j'aimerais aussi avoir quelques éclaircissements car
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT ts_rank(tsv, to_tsquery('waz:*')) AS score, trk_id AS id, trk_name AS name, trk_filename AS filename, trk_duration AS duration, trk_rate AS rate, trk_length AS length, trk_view AS view, trk_veh_id AS veh_id, trk_mem_id AS mem_id, trk_map_type FROM search_match, track_group WHERE to_tsquery('waz:*') @@ tsv AND sem_trk_id=trk_id AND trk_status=0 ORDER BY score DESC
-avec ('waz:*') j'obtiens tous les lignes qui comprennent des mots débutant
par 'waz'
-avec ('waziers') j'obtiens tous les lignes qui comprennent le mot 'waziers'
Mais je ne trouve pas comment avoir les lignes qui comprennent les mots se terminant par 'ziers'.
Merci beaucoup pour votre aide
Partager