Bonjour à tous.

Je suis actuellement en train d'effectuer des tests de recherche via Oracle Text sur notre DB contenant l'ensemble des rues de Belgique.

Il se trouve que je suis tombé sur un cas qui, il me semble devrait être trouvable et qui pourtant ne l'est pas.
Avant de vous donner ce cas, voici ce que j'ai effectué pour la création des index:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
exec ctx_ddl.create_preference('lexer_french', 'BASIC_LEXER');
exec ctx_ddl.set_attribute('lexer_french','index_stems', 'FRENCH');
exec ctx_ddl.set_attribute('lexer_french','index_text','YES');
 
CREATE INDEX street_name_index_french ON str(strtextbf) INDEXTYPE IS ctxsys.context parameters ('LEXER  lexer_french');
J'utilise l'opérateur "fuzzy" pour mon query qui ressemble donc à ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
select distinct str.strtextbf from str where CONTAINS(str.strtextbf, 'fuzzy(nomDeRue, 59, 100, weight)',1) > 0;
Je recherche l'avenue des combattants située à Waterloo.
Si j'oublie le "o" soit "cmbattants" il ne trouve pas. Si j'oublie le "m" soit "cobattants" il trouve sans difficulté.

Comment pourrais-je améliorer cela?
Parce que c'est vrai que sur 90% des cas, la recherche via Oracle Text est plus performante que ce que nous utilions avant (algo basé sur la distance de Levenshtein) mais dans ce cas précis, notre ancienne méthode aurait trouvé sans aucune difficulté la rue...

Merci d'avance!