Fulltext renvoient des resultats bizarres...

Fulltext renvoient des resultats bizarres... - SQL/NoSQL - Programmation

Marsh Posté le 21-11-2011 à 14:59:53    

Bonjour,
 
Je rencontre des difficultés avec la mise en place d'une recherche fulltext.
Soit une table 'dic_city' contenant toutes les villes de france ainsi que leur code postal. Les 2 champs ont un index fulltext.
J'ai également réduit la taille minimale des mots indexé par le fulltext a 2 (y'a des noms de villes en 2 lettres)
ma requête :
 

Code :
  1. SELECT dic_name, dic_zipcode, MATCH(dic_name, dic_zipcode) AGAINST('bast') AS relevancy
  2. FROM dic_city
  3. WHERE MATCH(dic_name, dic_zipcode) AGAINST('bast')
  4. ORDER BY relevancy DESC
  5. LIMIT 10


 
La requête marche bien pour la plupart des recherches. Mais pour certaines non.
Exemple : alors que 'bastia' est bien dans ma table une recherche sur :
'bas' renvoie 10 villes mais pas 'bastia' => normal
'bast' ne renvoie rien
'basti' ne renvoie rien
'bastia' renvoie 'bastia'
 
J'ai essayé avec et sans boolean mode, en reconstruisant l'index, etc...  
Vous avez une idée ?


---------------
Le seul configurateur de PC qui compare les prix ! - Le comparateur de prix du matos photo - Instagram
Reply

Marsh Posté le 21-11-2011 à 14:59:53   

Reply

Marsh Posté le 21-11-2011 à 15:17:58    

pourquoi tu fais pas un LIKE 'bast%' ? T'aurais pas ce pb ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-11-2011 à 15:24:38    

Parce qu'un like me permettrait pas de renvoyer des resultats "approchant". Par ex. si je cherche "tain l'hermitage" il me renvoie rien parce que dans la base c'est "tain-l'hermitage". Alors que le fulltext me le renvoie bien lui. Et le like me permet pas non plus de trier par pertinence.


---------------
Le seul configurateur de PC qui compare les prix ! - Le comparateur de prix du matos photo - Instagram
Reply

Marsh Posté le 22-11-2011 à 10:12:38    

Solution 1 :  
tu fais une 1ère requête avec like. Si pas de réponse, une 2ème requête en fulltext...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-11-2011 à 10:47:21    

J'aimerai mieux faire une seule requete.  
Pour l'instant, j'ai trouvé une solution "intermediaire" ou je retraite mon input pour transformer les "-" e t les "'" en " ", et je fais un like sur les différents "mots".
Ex:  

Code :
  1. SELECT cit_name, cit_zipcode
  2. FROM city c
  3. WHERE 1 = 1 AND (cit_name LIKE '%tain%' OR cit_zipcode LIKE '%tain%')  AND (cit_name LIKE '%l%' OR cit_zipcode LIKE '%l%')  AND (cit_name LIKE '%hermita%' OR cit_zipcode LIKE '%hermita%')  ORDER BY cit_name ASC LIMIT 10


 
En attendant mieux... Car j'aimerais bien comprendre aussi pourquoi le fulltext ne marche pas dans certains cas !


---------------
Le seul configurateur de PC qui compare les prix ! - Le comparateur de prix du matos photo - Instagram
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed