Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie erstelle ich einen Textindex für die Suche nach '%abc%'?

Ich würde dies verwenden (stellen Sie die minimale und maximale Länge auf geeignete Werte ein)

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')

Die Parameter werden hier erklärt Oracle Text Reference

und sehen Sie sich diese Frage an, wie die Aktualisierung verwaltet wird und warum der Index möglicherweise nicht schneller ist als ein vollständiger Scan mit Daten mit hoher Kardinalität:

PL/SQL-Leistungsoptimierung für LIKE '% ...%' Wildcard-Abfragen