|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Membre émérite
![]() ![]() |
Bonjour,
Je travaille sur une application qui permet de rechercher des mots clés dans des textes en utilisant un dictionnaire en entrée. C'est-à-dire : J'ai une table DICTIONNAIRE de mots clés que j’appelle un dictionnaire avec un champ MOT_CLE NVARCHAR2(100 CHAR) qui contient ces mot clés. Une autre table INCIDENTS avec un champ qui contient du texte DEFAUTS de type VARCHAR2(120 byte). Le but du traitement est de remonter toute la liste des mots qui sont dans : A la fois dans le dictionnaire et dans le texte. Pour cela, j'utilise la fonction CONTAINS dans la requête comme suit : Code :
Le besoin fonctionnel est : Si je cherche un mot comme fum, il doit me renvoyer tous les textes contenant ce mot, mais aussi tous les textes contenant les mots comme fumee. Mais le résultat n'est pas celui attendu. car la recherche effectuée s'est basé uniquement sur le mot recherché avec exactitude de 100%. Concrètement ça donne ceci : Code :
Code :
Est ce qu'il y a un paramètre à modifier lors de la création de l'index ou de la table pour permettre la recherche avec inclusion? Pour info, la liste des mots est importante, et la table INCIDENT est d'une grande volumétrie. Pour cela on utilise un index texte sur le champ DEFAULTS. L'utilisation de la fonction LIKE ou INSTR n'arrange pas les choses, les traitement sont très longs. Sachant que j'ai ceci lors de la création de l'index : Code :
Quelqu’un a une idée sur ce sujet ? Merci d'avance |
||||||||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : décembre 2010 Messages : 190 ![]() |
salut,
Le fonction 'LIKE' avec un index sur les bonnes colonnes ne peuvent pas t'aider? |
|
|
01
|
|
|
#3 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
ne permet pas l'utilisation des indexes
Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#4 | ||
|
Membre émérite
![]() ![]() |
Merci pour vos réponses.
Malheureusement le LIKE ne règle pas le problème, comme l'index n'est pas pris en compte avec cette fonction, les temps de réponse sont conséquents. Je me pose la question s'il faut utiliser un paramètre particulier dans la création de l'index afin de permettre l'utilisation de la fonction CONTAINS. En attendant on peut utiliser le %fum% à la place de fum, donc on obtient la requête comme suit : Code :
Merci |
||
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() ![]() |
Bonjour,
Est-ce la fonction CONTAINS aussi compliquée que ça ? Quelqu’un a déjà utilisé cette fonction ? Merci |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Avec % tu as déjà la réponse non ?
wildcards (% _) |
|
|
10
|
|
|
#7 |
|
Membre émérite
![]() ![]() |
Bonjour
Pour skuatamad: Les % réduisent beaucoup les performances de la recherche. Et comme les tables sont très volumineuse, cela risque de prendre beaucoup de temps. Je me demandais si le fait d'utiliser CONTAINS en modifiant certains paramètres de l'Index donnera satisfaction. Mais apparemment ce n'est pas le cas. Il faut absolument utiliser les % Par conséquent, je mis le statut de la discussion à Résolu |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com