Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment créer un index de texte pour la recherche '% abc%' ?

Je l'utiliserais (définissez-vous la longueur min et max pour des valeurs appropriées)

BEGIN
    ctx_ddl.create_preference  ('FT_WL', 'BASIC_WORDLIST');
    ctx_ddl.set_attribute      ('FT_WL', 'substring_index',   'YES');
    ctx_ddl.set_attribute      ('FT_WL', 'prefix_index',      'YES');
    ctx_ddl.set_attribute      ('FT_WL', 'prefix_min_length', 1);
    ctx_ddl.set_attribute      ('FT_WL', 'prefix_max_length', 6);
  END;

CREATE INDEX fulltext_idx ON tmp_fulltext (fulltext)
 INDEXTYPE IS CTXSYS.CTXCAT
 PARAMETERS ('WORDLIST FT_WL')

Les paramètres sont expliqués ici Oracle Text Reference

et consultez cette question sur la façon de gérer l'actualisation et comment l'index peut ne pas être plus rapide qu'une analyse complète avec des données de cardinalité élevée :

Réglage des performances PL/SQL pour LIKE '% ...%' Requêtes génériques