Ricerche Full Text
Le ricerche per contenuto su campi contenenti di testo vengono normalmente fatte inserendo nelle query delle clausole del tipo campo LIKE %testo%. Tali clausole producono query particolarmente pesanti perchè costringono il DBMS ad effettuare un full table scan e non utilizzano in alcun modo gli indici. Per ovviare a questo problema è stato introdotto il supporto alle ricerche full text su alcuni campi di testo del protocollo, come soluzione ai lunghi tempi di risposta delle query con clausole LIKE %testo% su database di grosse dimensioni.
Esempio ricerche in cui voglio cercare tutte le occorrenze in cui in un campo di testo è presente una parola (ad es. cerco tutti i protocolli che contengono la parola 'ORDINANZA' nell'oggetto -> questo normalmente viene fatto con una clausola LIKE '%ORDINANZA%'). Problema: le query che contengono una clausola LIKE '%testodacercare%' risultano particolarmente pesanti in quanto costringono il DBMS ad effettuare un full table scan per esaminare tutte le righe della tabella e verificare se soddisfano al criterio specificato. Per questo motivo non vengono utilizzati gli indici. Soluzione: alcuni dbms danno la possibilità di creare degli indici specifici (indici full text) che permettono di indicizzare il contenuto di campi di testo, dando la possibilità di sfruttare tali indici nel piano di esecuzione delle query e renderle perciò molto più performanti. Per sfruttare questi indici è necessario utilizzare una apposita sintassi nelle query di interrogazione, specifica per il DBMS utilizzato.
La seguente implementazione è basata su Oracle Text (riguarda perciò solo i clienti che usano dbms Oracle ed hanno installato l'opzione Oracle Text); si tratta della fascia dei clienti di grosse dimensioni in cui il problema è particolarmente evidente.
Configurazione Aprire la configurazione dei Parametri Globali > 'Ricerche'; si vedrà una nuova sezione relativa all'indicizzazione full text. Da qui è possibile abilitare la ricerca full text sui campi prescelti, che sarà possibile solamente se viene rilevata la presenza dell'indice full text associato al campo selezionato.
Una volta abilitata, andando in Gestione/Consultazione Protocollo ed eseguendo una ricerca di alcune parole nei campi indicizzati verrà eseguita una query full text in grado di ricavare tutti i protocolli in cui risultano occorrenze delle parole indicate; in qualsiasi ordine.