Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2409 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Jongler avec les dictionnaires dans Tsearch2

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Jongler avec les dictionnaires dans Tsearch2

n°1865793
Predicator
Posté le 25-03-2009 à 17:03:43  profilanswer
 

Bonjour,
 
J'indexe une grosse base de données d'informations historiques, seulement voilà, le seul dictionnaire existant, fr_ispell, contient peu de (voire aucune) personnalités historiques.
 
Je pourrais augmenter le dictionnaire, mais ça me paraît inutile, pour peu qu'on puisse tout de même trouver certains mots.
 
J'ai essayé avec la config standard (anglaise) et la config française. Voici les résultats sur la même phrase :
 

Code :
  1. select * from ts_debug('je suis un président appelé mitterrand');
  2. -- Version anglaise
  3. "default";"lword";"Latin word";"je";"{en_stem}";"'je'"
  4. "default";"lword";"Latin word";"suis";"{en_stem}";"'sui'"
  5. "default";"lword";"Latin word";"un";"{en_stem}";"'un'"
  6. "default";"word";"Word";"président";"{simple}";"'président'"
  7. "default";"word";"Word";"appelé";"{simple}";"'appelé'"
  8. "default";"lword";"Latin word";"mitterrand";"{en_stem}";"'mitterrand'"
  9. -- Version française
  10. "default";"lword";"Latin word";"je";"{fr_ispell}";""
  11. "default";"lword";"Latin word";"suis";"{fr_ispell}";""
  12. "default";"lword";"Latin word";"un";"{fr_ispell}";""
  13. "default";"word";"Word";"président";"{fr_ispell}";"'président'"
  14. "default";"word";"Word";"appelé";"{fr_ispell}";"'appelé'"
  15. "default";"lword";"Latin word";"mitterrand";"{fr_ispell}";""


 
Dans le premier cas, il trouve tous les mots, ne sachant pas comment récupérer leur racine. Dans le second, il gère les racines (à priori) sauf pour la personnalité, pour qui il rend le mot "vide". Ce qui empêche toute recherche sur ce mot. En gros, si un mot n'est pas dans le dictionnaire, impossible de le trouver, ce qui est plutôt impossible à utiliser.
 
J'ai parcouru diverses docs sur le sujet, sans bien trop comprendre comment tout ça fonctionne. Notamment, j'ai vu qu'il était possible de trouver la racine des mots avec plusieurs stemmeurs :
 

Citation :


General rule: For each lexeme type it's possible to specify which dictionaries and in what order, will be used to process lexeme. This information is stored in table pg_ts_cfgmap. For example:

Code :
  1. ......skip.........................................
  2. default_russian | lword        | {astrosyn,en_stem}
  3. default_russian | lpart_hword  | {astrosyn,en_stem}
  4. default_russian | lhword       | {astrosyn,en_stem}


Note, that once lexeme gets recognized by one dictionary it will not pass to the next dictionary ! So, it's meaningless to specify {simple, en_stem}, or {en_stem, astrosyn}, because 'simple' and 'en_stem' recognize any lexeme by definition.  


 
Source
 
J'ai essayé en configurant français puis simple, en prenant soin d'ajouter aussi pour "word" :
 

Code :
  1. select * from pg_ts_cfgmap where ts_name='default' and tok_alias in ('lword', 'lpart_hword','lhword', 'word' );
  2. "default";"word";"{fr_ispell,simple}"
  3. "default";"lword";"{fr_ispell,simple}"
  4. "default";"lpart_hword";"{fr_ispell,simple}"
  5. "default";"lhword";"{fr_ispell,simple}"


 
On le retrouve bien à l'exécution de la première requête, mais toujours rien :
 

Code :
  1. "default";"lword";"Latin word";"je";"{fr_ispell,simple}";""
  2. "default";"lword";"Latin word";"suis";"{fr_ispell,simple}";""
  3. "default";"lword";"Latin word";"un";"{fr_ispell,simple}";""
  4. "default";"word";"Word";"président";"{fr_ispell,simple}";"'président'"
  5. "default";"word";"Word";"appelé";"{fr_ispell,simple}";"'appelé'"
  6. "default";"lword";"Latin word";"mitterrand";"{fr_ispell,simple}";""


 
Pire, en ne mettant que "simple", pour me rapprocher de la configuration par défaut, rien ne change :
 

Code :
  1. "default";"lword";"Latin word";"je";"{simple}";""
  2. "default";"lword";"Latin word";"suis";"{simple}";""
  3. "default";"lword";"Latin word";"un";"{simple}";""
  4. "default";"word";"Word";"président";"{simple}";"'président'"
  5. "default";"word";"Word";"appelé";"{simple}";"'appelé'"
  6. "default";"lword";"Latin word";"mitterrand";"{simple}";""


 
En gros, je ne sais pas comment faire. Il n'y a pas que les dictionnaires qui entrent en jeu, car dans deux conditions presque identiques (la différence étant l'intégration du dictionnaire français dans le second cas), on a deux résultats différents...
 
Help quoi... [:flclsd]

mood
Publicité
Posté le 25-03-2009 à 17:03:43  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Jongler avec les dictionnaires dans Tsearch2

 

Sujets relatifs
Dictionnaires asp[PostgreSQL - Tsearch2] Configuration du dictionnaire
recherche interactive comme dans les dictionnaires en VBA 
Plus de sujets relatifs à : Jongler avec les dictionnaires dans Tsearch2


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR