170
IBM i Versione 7.2 Servizi e-business e Web OmniFind Text Search Server per DB2 per i

IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

IBM iVersione 7.2

Servizi e-business e WebOmniFind Text Search Server per DB2per i

���

Page 2: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,
Page 3: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

IBM iVersione 7.2

Servizi e-business e WebOmniFind Text Search Server per DB2per i

���

Page 4: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

NotaPrima di utilizzare le presenti informazioni e il prodotto da esse supportato, leggere le informazioni contenute nella sezione“Informazioni particolari” a pagina 157.

Questo documento può contenere riferimenti al LIC (Licensed Internal Code-Microprogramma Interno su licenza). IlLIC è un codice macchina concesso in licenza in base alle clausole dell'accordo IBM License Agreement for MachineCode.

© Copyright IBM Corporation 2002, 2013.

Page 5: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Indice

OmniFind Text Search Server per DB2per i . . . . . . . . . . . . . . . . 1Novità per IBM i 7.2 . . . . . . . . . . . . 1File PDF per OmniFind Text Search Server per DB2per i . . . . . . . . . . . . . . . . . 1Introduzione a OmniFind Text Search Server per DB2per i . . . . . . . . . . . . . . . . . 2

Panoramica di OmniFind Text Search Server perDB2 per i . . . . . . . . . . . . . . 2Requisiti di sistema per l'installazione diOmniFind Text Search Server per DB2 per i . . . 4

Concetti chiave . . . . . . . . . . . . . 4Creazione e aggiornamento di un indice di ricercatesto . . . . . . . . . . . . . . . . 4Indicizzazione asincrona e trigger . . . . . . 5Formati di documento supportati . . . . . . 6Tipi di dati supportati . . . . . . . . . . 7Supporto di sinonimi e punteggio testuale . . . 7Elaborazione linguistica. . . . . . . . . . 8

Lingue supportate . . . . . . . . . . 8Elaborazione linguistica per i documenti incinese, giapponese e coreano . . . . . . . 9

Nome alias di server . . . . . . . . . . 11Installazione e configurazione delle funzioni diricerca testo . . . . . . . . . . . . . . 12

Installazione di OmniFind Text Search Server perDB2 per i . . . . . . . . . . . . . . 12Avvio delle funzioni di ricerca testo . . . . . 13Creazione di un indice di ricerca testo . . . . 14Aggiornamento di un indice di ricerca testo . . 14Ricerca su un indice di ricerca testo . . . . . 14Troncamento di documenti . . . . . . . . 15

Procedure memorizzate di gestione per la ricercatesto . . . . . . . . . . . . . . . . . 15

SYSPROC.SYSTS_START . . . . . . . . . 15SYSPROC.SYSTS_STOP . . . . . . . . . 17SYSPROC.SYSTS_CREATE . . . . . . . . 18SYSPROC.SYSTS_ALTER . . . . . . . . . 28SYSPROC.SYSTS_DROP . . . . . . . . . 34SYSPROC.SYSTS_UPDATE . . . . . . . . 35SYSPROC.SYSTS_SHUTDOWN. . . . . . . 38

Ricerca con un indice di ricerca testo . . . . . . 40CONTAINS . . . . . . . . . . . . . 40SCORE . . . . . . . . . . . . . . . 42Sintassi degli argomenti di ricerca . . . . . . 44

Esempi di query semplici . . . . . . . . 46Operatori di ricerca avanzata . . . . . . 47Ricerca di caratteri speciali . . . . . . . 50Esempio utilizzando le funzioni CONTAINS eSCORE . . . . . . . . . . . . . . 52

Ricerca XML . . . . . . . . . . . . . 53Supporto degli spazi nome di ricerca XML . . 59Utilizzo degli spazi nome nella ricerca . . . 60Esempio di ricerca XML . . . . . . . . 64Grammatica delle query di ricerca XML . . . 68

Gestione di un OmniFind(r) Text Search Server perDB2(r) per i . . . . . . . . . . . . . . 69

Avvio di OmniFind Text Search Server per DB2per i . . . . . . . . . . . . . . . . 69Arresto di OmniFind Text Search Server per DB2per i . . . . . . . . . . . . . . . . 70Salvataggio e ripristino degli indici di ricercatesto . . . . . . . . . . . . . . . . 71

Salvataggio e ripristino di un indice di ricercatesto senza dati . . . . . . . . . . . 71Salvataggio e ripristino di un indice di ricercatesto con dati . . . . . . . . . . . . 72

Determinazione del problema . . . . . . . 74Visualizzazione e salvataggio delle registrazionidel server . . . . . . . . . . . . . . 74Strumenti di gestione . . . . . . . . . . 75

Strumento di configurazione. . . . . . . 75SYSPROC.SYSTS_REMOVE . . . . . . . 78SYSPROC.SYSTS_REPRIMEINDEX . . . . 79SYSTS_CLEAR_INDEXES . . . . . . . 80SYSPROC.SYSTS_VALIDITYCHECK . . . . 81QDBTSLIB.QDBTS_ROWS_STATUS . . . . 83Dizionari dei sinonimi . . . . . . . . . 84

Aggiunta di un dizionario di sinonimi auna raccolta . . . . . . . . . . . 85Eliminazione di un dizionario di sinonimida una raccolta . . . . . . . . . . 86

Ricerca di indici mancanti oppure orfani. . . 86Gestione avanzata . . . . . . . . . . 88

Strumento ServerInstance. . . . . . . . . 89Health Checker . . . . . . . . . . . . 90Considerazioni sull'IASP (Independent ASP) perOmniFind Text Search Server per DB2 per i . . 91Alta disponibilità . . . . . . . . . . . 92Analisi delle prestazioni . . . . . . . . . 93Considerazioni sulle transazioni . . . . . . 97Utilizzo di IBM Navigator per i . . . . . . 98

Gestione dei server di ricerca testo . . . . 99Gestione degli indici di ricerca testo . . . . 100

Visualizzazione delle creazioni di indice diricerca testo . . . . . . . . . . . 102

Utilizzo di System i Navigator. . . . . . . 103Gestione dei server di ricerca testo . . . . 104Gestione degli indici di ricerca testo . . . . 106

Visualizzazione delle creazioni di indice diricerca testo . . . . . . . . . . . 109

Tabelle di gestione della ricerca testo . . . . . 110Tabella di gestione QSYS2.SYSTEXTDEFAULTS 110Tabella di gestione QSYS2.SYSTEXTINDEXES 111Tabella di gestione QSYS2.SYSTEXTCOLUMNS 113Tabella di gestione QSYS2.SYSTEXTSERVERS 114Tabella di gestioneQSYS2.SYSTEXTCONFIGURATION . . . . . 115Tabella di gestioneQSYS2.SYSTEXTSERVERHISTORY . . . . . 116Vista dell'indice di ricerca testo . . . . . . 116

© Copyright IBM Corp. 2002, 2013 iii

Page 6: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Estensioni per indicizzare e ricercare dati non DB2 117Panoramica delle estensioni . . . . . . . 117Creazione di una raccolta di ricerche di testo 118Aggiunta di una serie di oggetti per dati di filedi spool . . . . . . . . . . . . . . 123Rimozione di una serie di oggetti per dati di filedi spool . . . . . . . . . . . . . . 127Aggiunta di una serie di oggetti per dati di filedi flusso . . . . . . . . . . . . . . 130Rimozione di una serie di oggetti per dati di filedi flusso . . . . . . . . . . . . . . 132Aggiunta di una serie di oggetti per file fisico diorigine con più membri . . . . . . . . . 134Rimozione di una serie di oggetti per file fisicodi origine con più membri . . . . . . . . 136Rimozione di una serie di oggetti. . . . . . 137Aggiornamento della raccolta . . . . . . . 138Ripopolamento della raccolta di ricerche di testo 139Ricerca nella raccolta . . . . . . . . . . 140

Query delle informazioni sulla serie di oggetti 142Richiamo dello stato degli oggetti indicizzati 143Richiamo di oggetti non indicizzati . . . . . 144Richiamo dello stato della raccolta . . . . . 146Eliminazione di una raccolta di ricerche di testo 147Modifica di una raccolta di ricerche di testo . . 148Considerazioni sull'IASP (Independent ASP) perle raccolte di ricerche di testo . . . . . . . 151Considerazioni sul backup e il ripristino per leraccolte di ricerche di testo . . . . . . . . 151

Messaggi e codici . . . . . . . . . . . . 152Messaggi OmniFind . . . . . . . . . . 152

Informazioni particolari . . . . . . . 157Informazioni sull'interfaccia di programmazione 159Marchi . . . . . . . . . . . . . . . 159

Indice analitico. . . . . . . . . . . 161

iv IBM i: OmniFind Text Search Server per DB2 per i

Page 7: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

OmniFind Text Search Server per DB2 per i

OmniFind Text Search Server per DB2 per i consente di immettere istruzioni SQL che soddisfano le querydi ricerca testo di uso comune sui documenti memorizzati in un database DB2.

Nota: utilizzando gli esempi di codice, si accettano i termini indicati nella sezione “Informazionisull'esonero di responsabilità e licenza del codice” a pagina 155.

Novità per IBM i 7.2Questa sezione contiene le informazioni nuove o significativamente modificate per la raccolta diargomenti per OmniFind Text Search Server per DB2 per i.

Le nuove funzioni principali includono:v “Estensioni per indicizzare e ricercare dati non DB2” a pagina 117

– “Aggiunta di una serie di oggetti per file fisico di origine con più membri” a pagina 134– “Aggiunta di una serie di oggetti per dati di file di flusso” a pagina 130– “Modifica di una raccolta di ricerche di testo” a pagina 148– Rimozione di una serie di oggetti in base all'attributo

- “Rimozione di una serie di oggetti per dati di file di spool” a pagina 127- “Rimozione di una serie di oggetti per dati di file di flusso” a pagina 132- “Rimozione di una serie di oggetti per file fisico di origine con più membri” a pagina 136

v “Ricerca di caratteri speciali” a pagina 50v Rimozione degli indici orfaniv Chiusura del serverv Controllo dello stato e del codice di ritorno per ogni riga in stato di avvertenza o errorev Supporto RCAC

– Creazione di un indice di ricerca testo protetto– Modifica di un indice di ricerca testo in un indice protetto

Come visualizzare le novità o le modifiche

Per facilitare la visualizzazione delle modifiche tecniche applicate, l'information center utilizza:v L'immagine per contrassegnare l'inizio delle informazioni nuove o modificate.v L'immagine per contrassegnare la fine delle informazioni nuove o modificate.

Nei file PDF, è possibile che vengano visualizzate le barre di revisione (|) sul margine a sinistra delleinformazioni nuove e modificate.

Per reperire altre informazioni su cosa è nuovo o è stato modificato in questo release, consultare lasezione Memo per gli utenti.

File PDF per OmniFind Text Search Server per DB2 per iUtilizzare questa pagina per visualizzare e stampare un PDF di queste informazioni.

Per visualizzare o scaricare il file PDF per questo documento, selezionare OmniFind Text Search Serverper DB2 per i (circa 1192 KB).

© Copyright IBM Corp. 2002, 2013 1

Page 8: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Altre informazioni

È anche possibile visualizzare o stampare i seguenti file PDF:

v Preparing for and Tuning the SQL Query Engine on DB2 for i5/OS

v SQL Performance Diagnosis on IBM® DB2 Universal Database for iSeries

.

Salvataggio di file PDF

Per salvare un PDF sulla stazione di lavoro per la visualizzazione o la stampa:1. Fare clic con il tasto destro del mouse sul PDF nel browser (fare clic con il tasto destro del mouse sul

collegamento precedente).2. Fare clic sull'opzione che salva il PDF localmente.3. Andare all'indirizzario in cui si desidera salvare il PDF.4. Fare clic su Salva.

Scaricamento di Adobe Reader

Per visualizzare o stampare questi file PDF, è necessario che sul proprio sistema sia installato Adobe

Reader. È possibile scaricare una copia gratuita da Adobe (http://get.adobe.com/reader/) .

Introduzione a OmniFind Text Search Server per DB2 per iDB2 for i utilizza OmniFind(r) Text Search Server come un motore di indicizzazione e ricerca per idocumenti memorizzati in un database DB2.

OMNIFIND è un prodotto di ricerca testo che consente agli utenti di IBM i di eseguire ricerche su testonon strutturato memorizzato in una colonna di una tabella DB2 per i. Il testo memorizzato nella colonnapuò essere testo di caratteri semplice, un documento XML o uno qualsiasi di diversi tipi differenti didocumenti rich text, come ad esempio un file DOC o PDF. Il prodotto consente agli utenti di indicizzare idati non strutturati senza doverli analizzare in un formato strutturato come ad esempio una tabella SQL.

OmniFind Text Search Server è un motore di ricerca basato sul contesto. Supporta la capacità di ricerca dicorrispondenza parziale. Ad esempio, una ricerca di 'mice' rileva di documenti che contengono 'mice' o'mouse'. Il motore di ricerca supporta anche il contesto di lingua. Comprende, ad esempio, gli equivalentidi ricerca di corrispondenza parziale di 'mice' e 'mouse' sia in inglese sia in spagnolo.

Molte applicazioni possono avvalersi di questa capacità. Un buon esempio è un database di gestione dellerisorse umane. I curriculum dei candidati possono essere memorizzati nel database in qualsiasi formatosiano stati inoltrati. Le ricerche successive con OmniFind possono essere utilizzate per cercare potenzialicandidati con determinate capacità chiave.

Panoramica di OmniFind Text Search Server per DB2 per iOmniFind Text Search Server per DB2 per i fornisce una serie di procedure memorizzate di gestione edue funzioni incorporate: CONTAINS e SCORE. Queste funzioni vengono utilizzate per eseguire ricerchenegli indici di testo creati dai documenti memorizzati in una tabella DB2. Le procedure memorizzate digestione sono utilizzate per abilitare e disabilitare la ricerca di testo e per creare, aggiornare ed eliminareindici di testo.

Un indice di testo può essere creato su qualsiasi colonna dei seguenti tipi di dati:v CHAR

2 IBM i: OmniFind Text Search Server per DB2 per i

Page 9: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v VARCHARv CLOBv BLOBv DBCLOBv GRAPHICv VARGRAPHICv BINARYv VARBINARYv XML

I dati possono contenere testo semplice, HTML, XML o molti tipi di documenti articolati, come adesempio i file PDF. I dati vengono letti dalla colonna di testo e vengono convertiti in Unicode (CCSID1208) prima di essere indicizzati.

Gli indici di testo non sono dei tipici indici DB2. Non vengono gestiti automaticamente, non possonoessere registrati su giornale e non è possibile eseguirne il backup utilizzando i tipici metodi di backup eripristino. Gli indici di testo vengono creati e memorizzati su un server di ricerca testo.

Per impostazione predefinita, il server di ricerca testo viene creato sullo stesso sistema dei datimemorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server cheesegue IBM i, Linux, UNIX, AIX o Windows.

Il server di ricerca testo contiene una raccolta di termini significativi estratti da ciascuna riga dellacolonna. Una connessione TCP/IP viene utilizzata per comunicare con il server di ricerca testo.

Le funzioni CONTAINS e SCORE sono funzioni incorporate integrate in DB2 per i.

DB2 for i utilizza OmniFind(r) Text Search Server come un motore di indicizzazione e ricerca per idocumenti memorizzati in un database DB2.

OMNIFIND supporta più raccolte. Una raccolta contiene un indice di ricerca testo e delle opzionispecifiche per l'indice per l'analisi, l'indicizzazione e la ricerca.

OMNIFIND ha una GUI (graphical user interface) per la gestione di server e indici di testo.

Il server di ricerca testo fornisce anche delle procedure memorizzate SQL e degli strumenti di rigacomandi che è possibile utilizzare per le attività comuni. Queste attività comuni includono laconfigurazione e la gestione del server di ricerca testo, la creazione di un dizionario di sinonimi per unaraccolta e la diagnostica dei problemi.Concetti correlati:“Procedure memorizzate di gestione per la ricerca testo” a pagina 15È possibile avviare e arrestare le funzioni di ricerca testo e creare, eliminare e aggiornare gli indici diricerca testo utilizzando una serie di procedure memorizzate SQL di gestione. Queste procedure possonoessere richiamate da qualsiasi interfaccia SQL. Non è possibile richiamare queste procedure da una rigacomandi IBM i utilizzando i comandi CL.Riferimenti correlati:“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza che

OmniFind Text Search Server 3

Page 10: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

misura la misura in cui un documento corrisponde alla query.

Requisiti di sistema per l'installazione di OmniFind Text Search Serverper DB2 per iPrima di installare un OmniFind Text Search Server per DB2 per i, assicurarsi che il sistema soddisfi tuttii requisiti hardware, software e di sistema operativo.

Quando si installa OmniFind Text Search Server per DB2 per i, il programma di installazione crea unserver di ricerca testo per IBM i. È possibile installare i server di ricerca testo sui server remoti cheeseguono Linux o Windows. Questi server fanno parte di DB2 Accessories Suite for z/OS (5655-R14)

(http://www-01.ibm.com/software/data/db2imstools/db2tools/accessories-suite/) . Il collegamentocontiene informazioni sullo scaricamento della suite.

Requisiti software

Assicurarsi che il sistema soddisfi i seguenti requisiti software minimi:v 5770JV1 IBM Developer Kit per Java™

– Uno dei seguenti:- 5770JV1 Opzione 11 Java SE 6 32 bit- 5770JV1 Opzione 12 Java SE 6 64 bit

v DB2 Universal Java Driver installato e configurato sul server di ricerca testov Per IBM i, devono essere installati i seguenti programmi:

– 5770SS1 Opzione 30 Qshell– 5770SS1 Opzione 33 IBM i Portable Application Solutions Environment (IBM i PASE)– 5770SS1 Opzione 39 International Components for Unicode– La PTF di gruppo più recente per IBM DB2 for i è applicata sul sistema.

Concetti chiaveComprendere i concetti chiave sulle funzioni di ricerca testo consente di avvalersi dei vantaggi offerti daOmniFind Text Search per DB2 per i. I concetti chiave includono i tipi di documento e le linguesupportati.

Creazione e aggiornamento di un indice di ricerca testoÈ possibile creare un indice di ricerca testo definendo e dichiarando le proprietà dell'indice. È possibileaggiornare un indice di ricerca testo aggiungendo dei nuovi dati da una tabella DB2 all'indice. È anchepossibile aggiornare un indice di ricerca testo modificando i dati esistenti nell'indice.

Per ogni indice di ricerca testo creato, viene creata una nuova raccolta in OmniFind Text Search Serverper DB2 per i. Dopo la creazione iniziale, l'indice di ricerca testo non contiene dati.

Si aggiungono i dati all'indice di ricerca testo richiamando la procedura memorizzataSYSPROC.SYSTS_UPDATE. Il primo processo di aggiornamento aggiunge tutti i documenti di testo dallacolonna di testo all'indice di ricerca testo. Questo processo è noto come aggiornamento iniziale. Gliaggiornamenti successivi sono incrementali.

Quando viene creato un indice di ricerca testo, vengono creati o aggiornati i seguenti oggetti:v La tabella di gestione temporanea viene creata nella libreria QSYS2.v I trigger INSERT, DELETE e UPDATE vengono aggiunti alla tabella di base.v Una vista SQL con il nome dell'indice di ricerca testo viene creata nello schema dell'indice di ricerca

testo. Questa vista contiene informazioni sull'indice di testo. Ad esempio, la vista può essere utilizzata

4 IBM i: OmniFind Text Search Server per DB2 per i

Page 11: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

per ottenere il nome della tabella di base e il nome della tabella di gestione temporanea. La vistamostra anche il numero di modifiche in sospeso alla tabella di base che non sono ancora riflessenell'indice di ricerca testo.

v I cataloghi di indice di ricerca testo (SYSTEXTINDEXES e SYSTEXTCOLUMNS) nella libreria QSYS2vengono aggiornati con una nuova voce aggiunta per il nuovo indice di ricerca testo.

Considerazioni sulla tabella di gestione temporaneav Non eseguire operazioni database sulla tabella di gestione temporanea tranne il salvataggio e il

ripristino del file o la modifica delle autorizzazioni.v Se si stanno modificando le autorizzazioni sulla tabella di base, modificare le autorizzazioni anche sulla

tabella di gestione temporanea.

Considerazioni sulla tabella di base:v Non rimuovere i trigger DELETE, UPDATE e INSERT aggiunti quando viene creato un indice di

ricerca testo.v L'eliminazione dell'indice di ricerca testo rimuove i trigger.v Non modificare o rimuovere ROWID, chiave primaria o colonna univoca utilizzati come chiave

nell'indice di ricerca testo.v La modifica della colonna di dati della tabella di base che causa il troncamento dei dati potrebbe

causare delle false corrispondenze positive nell'indice di ricerca testo.Riferimenti correlati:“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.“Tabella di gestione QSYS2.SYSTEXTINDEXES” a pagina 111È possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.“Tabella di gestione QSYS2.SYSTEXTCOLUMNS” a pagina 113È possibile visualizzare le informazioni sulle colonne di testo per un indice di ricerca testo nella tabella digestione QSYS2.SYSTEXTCOLUMNS. Ciascun indice di ricerca testo ha un ID indice, dei nomi colonna ditesto e il nome schema della tabella di base.

Indicizzazione asincrona e triggerÈ possibile aggiornare l'indice di ricerca testo su OmniFind Text Search Server per DB2 per imanualmente oppure pianificarne l'esecuzione automatica.

L'indice di ricerca testo mantenuto su OmniFind Text Search Server per DB2 per i non viene aggiornatoin modo sincrono quando viene aggiornata la tabella DB2. L'aggiornamento di un indice di ricerca testo èun'operazione di ampie dimensioni.

Le modifiche alla colonna di tabella DB2 vengono invece catturate dai trigger e inserite in una tabella diregistrazione locale. Questa tabella di registrazione è indicata anche come tabella di gestione temporanea.Questi trigger memorizzano automaticamente le informazioni sui documenti nuovi, modificati e cancellatiin una tabella di registrazione. Ciascuna tabella di registrazione è associata a un indice di ricerca testo.L'applicazione del contenuto della tabella di registrazione al suo corrispondente indice di ricerca testo èdetta aggiornamento incrementale.

È necessario aggiornare periodicamente l'indice di ricerca testo perché le modifiche siano riflesse nellequery.

È possibile aggiornare l'indice di ricerca testo manualmente richiamando la procedura memorizzataSYSPROC.SYSTS_UPDATE.

OmniFind Text Search Server 5

Page 12: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

È anche possibile pianificare l'esecuzione automatica degli aggiornamenti utilizzando la clausola UPDATEFREQUENCY sulla procedura SYSPROC.SYSTS_CREATE quando viene creato l'indice di testo.Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.

Formati di documento supportatiI dati di colonna di testo possono essere testo semplice, un documento HTML, un documento XML oqualsiasi documento riconosciuto dal motore di ricerca.

OmniFind Text Search Server per DB2 per i analizza i documenti per estrarre le parti pertinenti e fare inmodo che sia possibile eseguire ricerche su di esse. Ad esempio, le tag e i metadati in un documentoHTML non sono indicizzati.

È supportata l'analisi dei seguenti formati di documento:v TEXT: testo semplicev HTML: Hypertext Markup Languagev XML: Extensible Markup Languagev INSO: OmniFind Text Search Server per DB2 per i utilizza i filtri per rilevare il formato dei documenti

di testo. Sono supportati i seguenti formati di documento INSO:– XML– HTML– JustSystems Ichitaro– Lotus 123– Lotus Freelance– Lotus WordPro– Microsoft Excel– Microsoft PowerPoint– Microsoft Rich Text Format– Microsoft Visio– Microsoft Word– Microsoft Write– PDF (Portable Document Format)– Quattro Pro– Rich Text RTF– StarOffice Calc e OpenOffice Calc

Tutti i documenti in una colonna di testo indicizzata devono essere dello stesso formato (TEXT, HTML,XML o INSO).

6 IBM i: OmniFind Text Search Server per DB2 per i

Page 13: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Dati XML

La struttura XML nei dati XML viene indicizzata in OmniFind Text Search Server per DB2 per i dopol'analisi dei dati tramite un parser XML. È quindi possibile utilizzare la sintassi delle query di ricercaXML supportata per richiamare i risultati.Concetti correlati:“Ricerca XML” a pagina 53È possibile indicizzare, ed eseguire ricerche su, documenti XML. La grammatica di ricerca XML utilizzaun sottoinsieme del linguaggio W3 XPath con estensioni per la ricerca testo. Le estensioni supportano lericerche per intervallo di valori numerici, Date e DateTime associati a un elemento o un attributo XML.Gli elementi strutturali possono essere utilizzati separatamente oppure combinati con del testo libero inquery.

Tipi di dati supportatiI dati nelle colonne di testo che si desidera indicizzare, e sottoporre a ricerche, possono essere dati binario dati carattere.

I seguenti tipi di dati sono dati binari:v BINARYv VARBINARYv BLOB

Inoltre, OMNIFIND gestisce i seguenti tipi di dati in modo analogo ai dati binari:v CHAR FOR BIT DATAv VARCHAR FOR BIT DATA

I seguenti tipi di dati sono dati carattere:v CHAR FOR SBCS DATA o FOR MIXED DATAv VARCHAR FOR SBCS DATA o FOR MIXED DATAv CLOBv DBCLOBv GRAPHICv VARGRAPHICv XML

Se i dati sono dei dati binari, è possibile specificare il CCSID (coded character set identifier) utilizzato percreare l'indice di ricerca testo. Per i dati carattere, il database DB2 conosce la codifica; pertanto, se sispecifica esplicitamente un CCSID, tale specifica viene ignorata.

Supporto di sinonimi e punteggio testualeÈ possibile utilizzare i sinonimi per migliorare i risultati per una query. È possibile utilizzare unpunteggio testuale per determinare la misura in cui un risultato corrisponde alla query.

Punteggio testuale

Un punteggio testuale viene calcolato come parte della ricerca e può essere incluso nei risultati dellaquery. Un punteggio testuale è un valore 0 - 1, con un massimo di tre punti decimali; ad esempio, da0.000 a 1.000. Un punteggio testuale denota la misura in cui un risultato corrisponde alla queryrelativamente a tutti gli altri documenti nell'indice di ricerca testo.

OmniFind Text Search Server 7

Page 14: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

OMNIFIND compone il punteggio testuale da vari fattori, come ad esempio l'importanza generale deitermini di ricerca e la prossimità delle ricorrenze dei termini di ricerca. L'importanza generale è basatasulla frequenza dei termini in ciascun documento e sullo scarto da tale frequenza dei termini in tutti idocumenti.

Supporto dei sinonimi

OmniFind Text Search Server per DB2 per i supporta l'utilizzo di sinonimi per modificare i risultati diuna query. L'utilizzo di sinonimi può aumentare il numero di risultati della query determinando lacorrispondenza di un numero maggiore di documenti a una query. Tuttavia, l'utilizzo di sinonimipotrebbe anche ridurre la precisione di una query e rendere più difficile trovare un numero inferiore didocumenti corrispondenti agli esatti criteri di ricerca.

Per impostazione predefinita, i sinonimi non vengono utilizzati per una query. Per utilizzare i sinonimiper una query, creare un dizionario di sinonimi e aggiungerlo a una raccolta utilizzando lo strumento deisinonimi.

Per ulteriori informazioni sui sinonimi, consultare “Dizionari dei sinonimi” a pagina 84.Riferimenti correlati:“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

Elaborazione linguisticaOmniFind Text Search Server per DB2 per i fornisce dei pacchetti dizionario per supportare l'elaborazionelinguistica di documenti e query non in lingua inglese.

Come alternativa alla segmentazione delle parole basate sul dizionario, OmniFind Text Search Server perDB2 per i utilizza il supporto di segmentazione per n-grammi per lingue quali il cinese, il giapponese e ilcoreano. La segmentazione per n-grammi è un metodo di analisi che considera le sequenze che sisovrappongono di un determinato numero di caratteri come una singola parola. In alternativa, lasegmentazione per spazi vuoti basata su Unicode utilizza uno spazio vuoto per delimitare le parole.

Se un documento di testo è in una delle lingue supportate, l'elaborazione linguistica viene eseguitaquando il testo viene analizzato in token. Per le lingue non supportate, viene restituito un codice errore.

Quando si esegue una ricerca su un indice di ricerca testo, viene indicata una corrispondenza checontiene le variazioni linguistiche dei termini della query. Le variazioni di una parola dipendono dallalingua della query.

Lingue supportateÈ possibile specificare che i documenti di testo vengano elaborati utilizzando una specifica lingua.

È possibile specificare la lingua per i dati di testo indicizzati nella procedura memorizzata di gestioneSYSPROC.SYSTS_CREATE. Se si imposta il valore su AUTO, OmniFind Text Search Server per DB2 per iprova a determinare la lingua. Per i documenti brevi, il rilevamento automatico potrebbe non essereaccurato e non è consigliato. La lingua predefinita per l'elaborazione linguistica è l'inglese (en_US).

La seguente tabella mostra i codici lingua di cinque caratteri per le lingue supportate.

Tabella 1. Codici lingua di cinque caratteri per le lingue supportate

Codice lingua Lingua

ar_AA Arabo

8 IBM i: OmniFind Text Search Server per DB2 per i

Page 15: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 1. Codici lingua di cinque caratteri per le lingue supportate (Continua)

Codice lingua Lingua

cs_CZ Ceco

da_DK Danese

de_CH Tedesco (Svizzera)

de_DE Tedesco (Germania)

el_GR Greco

en_AU Inglese (Australia)

en_GB Inglese (Regno Unito)

en_US Inglese (Stati Uniti)

es_ES Spagnolo (Spagna)

fi_FI Finlandese

fr_CA Francese (Canada)

fr_FR Francese (Francia)

it_IT Italiano

ja_JP Giapponese

ko_KR Coreano

nb_NO Norvegese Bokmal

nl_NL Olandese

nn_NO Norvegese Nynorsk

pl_PL Polacco

pt_BR Portoghese (Brasile)

pt_PT Portoghese (Portogallo)

ru_RU Russo

sv_SE Svedese

zh_CN Cinese semplificato

zh_TW Cinese tradizionale

Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.

Elaborazione linguistica per i documenti in cinese, giapponese e coreanoÈ possibile elaborare i documenti in cinese, giapponese o coreano utilizzando la segmentazione basata suidizionari oppure utilizzando la segmentazione per n-grammi.

Per un motore di ricerca, ottenere dei buoni risultati della ricerca dipende in ampia misura dalle tecnicheutilizzate per elaborare il testo. Dopo l'estrazione del testo dal documento, la prima fase nell'elaborazionedel testo consiste nell'identificare le singole parole nel testo. L'identificazione delle singole parole nel testoviene indicata come segmentazione. Per molte lingue, gli spazi (spazi vuoti, la fine di una riga e unaspecifica punteggiatura) possono essere utilizzati per riconoscere i limiti delle parole. Tuttavia, il cinese, ilgiapponese e il coreano non utilizzano spazi tra i caratteri per separare le parole e devono pertanto essereutilizzate delle altre tecniche.

OmniFind Text Search Server 9

Page 16: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

OmniFind Text Search Server per DB2 per i fornisce i seguenti due metodi per supportare l'elaborazionelinguistica di cinese, giapponese e coreano:v La segmentazione delle parole basata sui dizionari (detta anche analisi morfologica)v La segmentazione per n-grammi

Segmentazione delle parole basata sui dizionari

La segmentazione delle parole basata sui dizionari utilizza un dizionario specifico per la lingua peridentificare le parole nella sequenza di caratteri nel documento. Questa tecnica fornisce dei risultati dellaricerca precisi perché i dizionari vengono utilizzati per identificare i limiti delle parole. Tuttavia, lasegmentazione delle parole basata sui dizionari può non rilevare dei risultati corrispondenti specifici.

Segmentazione per n-grammi

La segmentazione per n-grammi evita il problema di identificare i limiti delle parole e indicizza invece lecoppie di caratteri che si sovrappongono. Poiché OmniFind Text Search Server per DB2 per i utilizza duecaratteri, questa tecnica è anche detta segmentazione per bi-grammi.

La segmentazione per n-grammi restituisce sempre tutti i documenti corrispondenti che contengono itermini della ricerca; tuttavia, questa tecnica può a volte restituire dei documenti che non corrispondonoalla query.

Per impostazione predefinita, OmniFind Text Search Server per DB2 per i viene fornito con un indicepreconfigurato che utilizza la segmentazione per n-grammi per cinese, giapponese e coreano.

Per vedere come funzionano entrambi i tipi di elaborazione linguistica, esaminare il seguente testo in undocumento: election for governor of Kanagawa prefecture. In giapponese, questo testo contiene ottocaratteri. Per questo esempio, gli otto caratteri sono rappresentati come A B C D E F G H. Una query diesempio che gli utenti possono immettere potrebbe essere election for governor, che è di quattrocaratteri, rappresentati come E F G H. (Il testo del documento e la query di esempio condividono deicaratteri simili).

Se si utilizza l'elaborazione di segmentazione per n-grammi:

Dopo l'indicizzazione del documento, il motore di ricerca segmenta il testo election forgovernor of Kanagawa prefecture nelle seguenti serie di caratteri: AB BC CD DE EF FG GH

La query di esempio election for governor viene segmentata nelle seguenti serie di caratteri: EFFG GH. Se si esegue la ricerca con la query di esempio election for governor, il documentoviene trovato. Il motivo è che i token sia per il testo del documento sia per la query si presentanonello stesso ordine.

Quando si abilita la segmentazione per n-grammi, potrebbe essere visualizzato un numeromaggiore di risultati anche se, probabilmente, meno precisi. Ad esempio, in giapponese, se sicerca con la query Kyoto e un documento nell'indice contiene il testo City of Tokyo, il documentoviene trovato. il motivo è che City of Tokyo e Kyoto condividono due degli stessi caratterigiapponesi.

Se non si utilizza l'elaborazione di segmentazione per n-grammi:

Dopo l'indicizzazione del documento, il motore di ricerca segmenta il testo election forgovernor of Kanagawa prefecture nelle seguenti serie di caratteri: ABC DEF GH.

La seguente query election for governor viene segmentata nelle seguenti serie di caratteri: EFGH. I caratteri EF non sono presenti nei token del testo del documento. (Anche se il documentonon ha EF, ha invece DEF).

Il testo del documento contiene DEF, ma la query contiene solo EF. Pertanto, è meno probabileche il documento venga trovato utilizzando la query di esempio.

10 IBM i: OmniFind Text Search Server per DB2 per i

Page 17: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Quando non si abilita la segmentazione per n-grammi, probabilmente si ricevono dei risultati piùprecisi anche se, probabilmente, in numero minore.

Nome alias di serverÈ possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.

Ciascun server di ricerca testo è identificato in modo univoco dalla colonna SERVERID nel catalogoQSYS2.SYSTEXTSERVERS. La colonna SERVERID è un numero intero generato in modo incrementale daldatabase.

La colonna ALIASNAME in QSYS2.SYSTEXTSERVERS viene fornita per consentire l'assegnazione di unnome alias significativo a ciascun server. I nomi alias di server possono essere utilizzati per fareriferimento ai server nelle procedure SYSTS_START, SYSTS_STOP, SYSTS_CREATE, SYSTS_SHUTDOWNe SYSTS_CLEAR_INDEXES.

Nota: il nome alias di server può essere modificato direttamente nella tabella di catalogoQSYS2.SYSTEXTSERVERS aggiornando il valore ALIASNAME.

Assegnare al server numero 1 un nome alias di "PRIMARY_LOCAL_SERVER".UPDATE QSYS2.SYSTEXTSERVERSSET ALIASNAME = ’PRIMARY_LOCAL_SERVER’WHERE SERVERID = 1

Per eliminare un nome alias da un server, impostare la colonna su NULL.

Eliminare un nome alias dal server numero 1.UPDATE QSYS2.SYSTEXTSERVERSSET ALIASNAME = NULLWHERE SERVERID = 1

Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“SYSPROC.SYSTS_STOP” a pagina 17È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_STOP per arrestare le funzioni diricerca di testo DB2. Questa procedura memorizzata imposta il valore SERVERSTATUS nel catalogoQSYS2.SYSTEXTSERVERS su 1 (arrestato).“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_SHUTDOWN” a pagina 38È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_SHUTDOWN per chiudere le funzionidi ricerca testo DB2®. Questa procedura memorizzata imposta il valore SERVERSTATUS nel catalogoQSYS2.SYSTEXTSERVERS su 1 (arrestato) ed inoltre termina i lavori del server di ricerca testo sul sistemahost.“SYSTS_CLEAR_INDEXES” a pagina 80È possibile rimuovere gli indici orfani con la procedura memorizzata SQLSYSPROC.SYSTS_CLEAR_INDEXES. Un altro modo implicito è richiamare direttamente SYSTS_START,che tenta di eliminare gli indici orfani automaticamente.

OmniFind Text Search Server 11

Page 18: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Installazione e configurazione delle funzioni di ricerca testoÈ possibile installare e configurare OmniFind Text Search Server per DB2 per i. È anche possibile creare eaggiornare un indice di ricerca testo in modo da poter iniziare a utilizzare le funzioni di ricerca testo suuna colonna in una tabella.

Installazione di OmniFind Text Search Server per DB2 per iInstallare OmniFind Text Search Server per DB2 per i utilizzando le procedure di installazione standardper un programma su licenza su IBM i. Viene creato un server di testo predefinito e la tabellaQSYS2.SYSTEXTSERVERS viene compilata con le informazioni sul server predefinito. Facoltativamente, èpossibile aggiungere dei server di ricerca testo aggiuntivi dopo l'installazione.

Compilazione della tabella QSYS2.SYSTEXTSERVERS

OmniFind Text Search Server per DB2 per i è il programma su licenza 5733-OMF di IBM. ConsultareInstallazione di programmi su licenza aggiuntivi per informazioni dettagliate su come installare unprogramma su licenza. Per trovare questo prodotto, immettere GO LICPGM dalla riga comandi e selezionarel'opzione 10 (Visualizzazione programmi su licenza installati). Viene visualizzato nell'elenco deiprogrammi su licenza.

La tabella QSYS2.SYSTEXTSERVERS contiene informazioni sugli IBM OmniFind Text Search Serverinstallati e disponibili per DB2 per i. Quando viene eseguita l'installazione iniziale del prodotto OmniFindText Search Server per DB2 per i, un server di testo predefinito viene creato sul sistema IBM i. La tabellaQSYS.SYSTEXTSERVERS viene compilata anche con le informazioni sul server predefinito.

Creazione di server di ricerca testo aggiuntivi

Se si stanno utilizzando i server di ricerca testo su un sistema IBM remoto, o se si stanno utilizzando deiserver non IBM come ad esempio un server Windows o Linux, compilare esplicitamente questa tabellaimmettendo un'istruzione SQL INSERT.

Se si desidera compilare la tabella QSYS2.SYSTEXTSERVERS con dei server aggiuntivi, attenersi allaseguente procedura nella SQL INSERT:1. Specificare il numero di porta del server e il nome del server per ciascun server di ricerca testo sulla

colonna SERVERPORT e le colonne SERVERNAME della tabella QSYS2.SYSTEXTSERVERSimmettendo un'istruzione SQL INSERT.

2. Specificare il token di autenticazione da ciascun server di ricerca testo sulla colonnaSERVERAUTHTOKEN della tabella QSYS2.SYSTEXTSERVERS nell'istruzione SQL INSERT.Quando il database DB2 comunica con un server di ricerca testo, è richiesto un token diautenticazione. Questo token è generato sul server di ricerca testo durante l'installazione.

3. Specificare la chiave server per ciascun server di ricerca testo sulla colonna SERVERMASTERKEYdella tabella QSYS2.SYSTEXTSERVERS nell'istruzione SQL INSERT.

4. FACOLTATIVO: specificare un ALIASNAME per il server sulla colonna ALIASNAME. QuestoALIASNAME può essere utilizzato per fare riferimento al server nelle operazioni successive.

Esempio

Il seguente esempio di un'istruzione SQL INSERT copia le informazioni richieste per un server di ricercatesto nelle colonne nella tabella QSYS2.SYSTEXTSERVERS:INSERT INTO QSYS2.SYSTEXTSERVERS(SERVERNAME,

SERVERADRINFO,SERVERPORT,SERVERTYPE,SERVERAUTHTOKEN,SERVERMASTERKEY,

12 IBM i: OmniFind Text Search Server per DB2 per i

Page 19: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

SERVERPATH,ALIASNAME)

VALUES(’127.0.0.1’,VARBINARY(X’0000’),49200,0,’AH2X4w==’,’b1YhcR9O858ArwxLJeIY/Q==’,’/QOpenSys/QIBM/ProdData/TextSearch/server1/bin/’,’LOCALSERVER2’);

I valori di esempio devono essere sostituiti con i valori effettivi per il server.Concetti correlati:“Nome alias di server” a pagina 11È possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.

Avvio delle funzioni di ricerca testoPrima di iniziare a utilizzare le funzioni di ricerca testo, chiamare la procedura memorizzataSYSPROC.SYSTS_START. Richiamando questa procedura, è possibile avviare tutti i server di produzionedefiniti come locali sul sistema.

Il supporto di ricerca testo include le istruzioni SQL che utilizzano la funzione CONTAINS, la funzioneSCORE e le seguenti procedure memorizzate di gestione:v SYSPROC.SYSTS_CREATEv SYSPROC.SYSTS_UPDATEv SYSPROC.SYSTS_DROPRiferimenti correlati:“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.“SYSPROC.SYSTS_DROP” a pagina 34È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_DROP per eliminare un indice diricerca testo definito utilizzando la procedura memorizzata SYSPROC.SYSTS_CREATE.“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

OmniFind Text Search Server 13

Page 20: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Creazione di un indice di ricerca testoÈ possibile creare un indice di ricerca testo richiamando la procedura memorizzataSYSPROC.SYSTS_CREATE.

La tabella di base DB2 deve contenere una colonna ROWID, una chiave univoca o una chiave primaria.

Per creare un indice di ricerca testo su una tabella DB2 esistente con una colonna che contiene testo:

Richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE.

L'indice di ricerca testo è vuoto fino al primo aggiornamento dell'indice.Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.

Aggiornamento di un indice di ricerca testoÈ possibile aggiornare un indice di ricerca testo richiamando la procedura memorizzataSYSPROC.SYSTS_UPDATE.

La chiamata SYSTS_UPDATE viene utilizzata per la compilazione iniziale dell'indice di ricerca testo.Viene utilizzata anche ogni volta che il contenuto della tabella DB2 viene modificato e si desiderasincronizzare l'indice di ricerca testo con queste modifiche.

Dopo che si è verificato un aggiornamento dell'indice di ricerca testo, è possibile eseguire delle query diricerca sull'indice di ricerca testo. La colonna di ricerca di testo della tabella di base può essere modificatadopo l'aggiornamento. In questo caso, i risultati della query di ricerca non riflettono queste modifichefinché non viene eseguito il successivo aggiornamento dell'indice di ricerca testo.Riferimenti correlati:“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.

Ricerca su un indice di ricerca testoÈ possibile eseguire una ricerca su un indice di ricerca testo utilizzando un'istruzione SQL con unafunzione CONTAINS o SCORE. I criteri di argomento di ricerca sono specificati nella funzione.

L'utente che sta eseguendo le query di testo su una tabella DB2 deve disporre della serie di privilegistandard richiesta per qualsiasi forma di query, come specificato in DB2 SQL Reference.Riferimenti correlati:“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

14 IBM i: OmniFind Text Search Server per DB2 per i

Page 21: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Troncamento di documentiOmniFind Text Search Server per DB2 per i limita il numero di caratteri che può essere indicizzato perciascun documento di testo. A volte, questo limite di caratteri determina il troncamento di documenti ditesto di grandi dimensioni nell'indice di ricerca testo.

I documenti che contengono più di 10 milioni di caratteri Unicode potrebbero essere troncati dal server diricerca testo. Per un documento rich text, questo limite viene applicato dopo che il documento vienetrasformato in testo semplice.

Se un documento di testo viene troncato durante la fase di analisi, si riceve un'avvertenza che indica chealcuni documenti non sono stati elaborati completamente. L'avvertenza viene visualizzata nellaregistrazione lavoro. Il documento viene indicizzato in modo parziale. Il testo presente nel documentodopo che è stato raggiunto il limite non viene indicizzato e non viene preso in considerazione durante lericerche.

Si consiglia di rimuovere il documento che è stato troncato dall'indice di ricerca testo per evitarecomportamenti non previsti durante l'elaborazione della ricerca. È possibile rimuovere il documentorimuovendo il corrispondente record dalla tabella DB2 oppure modificando il valore per il documento invuoto o null.

Procedure memorizzate di gestione per la ricerca testoÈ possibile avviare e arrestare le funzioni di ricerca testo e creare, eliminare e aggiornare gli indici diricerca testo utilizzando una serie di procedure memorizzate SQL di gestione. Queste procedure possonoessere richiamate da qualsiasi interfaccia SQL. Non è possibile richiamare queste procedure da una rigacomandi IBM i utilizzando i comandi CL.

Quando si visualizzano i cataloghi di sistema utilizzando STRSQL, è possibile vedere il contenuto dellecolonne impostando il lavoro su un CCSID diverso da 65535.

SYSPROC.SYSTS_STARTÈ possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.

Le funzioni di ricerca testo includono il supporto per le query SQL che utilizzano la funzioneCONTAINS, la funzione SCORE e le procedure memorizzate di gestione utilizzate per la gestione degliindici di ricerca testo.

Eseguire la procedura memorizzata SYSPROC.SYSTS_START ogni volta che un server viene aggiunto omodificato nella tabella QSYS2.SYSTEXTSERVERS.

Se le funzioni di ricerca testo non sono avviate, il database restituisce SQLCODE -20424 con il codiceerrore 4 per le funzioni CONTAINS e SCORE. Anche le procedure di gestione SYSPROC.SYSTS_CREATEe SYSPROC.SYSTS_UPDATE hanno esito negativo con SQLCODE -20424 se il server non è stato avviato.

Per i server di ricerca testo contenuti nella tabella QSYS2.SYSTEXTSERVERS, i nomi TCP/IP vengonorisolti. Più chiamate alla procedura memorizzata SYSPROC.SYSTS_START non sono considerate unerrore. Questo processo consente di verificare la risoluzione degli indirizzi nella tabellaQSYS2.SYSTEXTSERVERS.

Se il server è un server locale, questa chiamata della procedura memorizzata avvia il server, se non è giàavviato. Se il server è un server remoto, la chiamata della procedura verifica che il server sia attivo manon avvia effettivamente il server.

OmniFind Text Search Server 15

Page 22: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Prerequisiti

Prima di richiamare la procedura memorizzata SYSPROC.SYSTS_START, verificare che la tabellaQSYS2.SYSTEXTSERVERS contenga almeno una voce.

Autorizzazione

L'ID utente sotto il quale viene richiamata questa procedura memorizzata deve disporre dei seguentiprivilegi:v L'autorizzazione *EXECUTE sulla procedurav Il privilegio SELECT e UPDATE sulla tabella SYSTXTSRVR.v L'autorizzazione *EXECUTE sulla libreria QSYS2 del file SYSTXTSRVR.v L'autorizzazione *JOBCTL o l'utilizzo della funzione speciale di sicurezza QIBM_DB_SQLADM.

Per informazioni sulle autorizzazioni di sistema corrispondenti ai privilegi SQL, consultare GRANT(Table or View Privileges).

Sintassi

�� SYSPROC.SYSTS_START ( )idservernomealias

��

Il qualificativo dello schema è SYSPROC.

Parametro

idserver o nomealiasSpecifica l'identificativo del server da avviare. Un idserver o un nomealias server è una stringa. Se nonviene fornito alcun identificativo, il valore predefinito consiste nell'avvio di tutti i server. La stringaidentificativo deve essere un idserver valido che esiste nella colonna SERVERID oppure un nomealiasserver valido che esiste nella colonna ALIASNAME della tabella QSYS2.SYSTEXTSERVERS. Sel'identificativo può essere convertito in un valore intero, esso viene interpretato come un idserver. Sel'identificativo non può essere convertito in un valore intero, esso viene interpretato come unnomealias server.

Il tipo di dati di questo parametro è VARCHAR(128).

Nota: solo i server identificati come server di produzione vengono avviati se non viene specificatoalcun valore per idserver o nomealias. I server di produzione sono identificati dal parametroSERVERCLASS = 0 nella tabella QSYS2.SYSTEXTSERVERS. I server di test devono essere avviatispecificando l'idserver o il nomealias associato al server di test.

Per avviare tutti i server di produzione:CALL SYSPROC.SYSTS_START().

Per avviare un server con un ID di 1:CALL SYSPROC.SYSTS_START(1)

Per avviare un server con un nome alias di "LOCAL_SERVER":CALL SYSPROC.SYSTS_START('LOCAL_SERVER')

Per avviare un server con un nome alias di "local_server":CALL SYSPROC.SYSTS_START('"local_server"')

Concetti correlati:

16 IBM i: OmniFind Text Search Server per DB2 per i

Page 23: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

“Nome alias di server” a pagina 11È possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.Attività correlate:“Avvio di OmniFind Text Search Server per DB2 per i” a pagina 69È possibile avviare OmniFind Text Search Server per DB2 per i richiamando SYSPROC.SYSTS_START.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

SYSPROC.SYSTS_STOPÈ possibile richiamare la procedura memorizzata SYSPROC.SYSTS_STOP per arrestare le funzioni diricerca di testo DB2. Questa procedura memorizzata imposta il valore SERVERSTATUS nel catalogoQSYS2.SYSTEXTSERVERS su 1 (arrestato).

Dopo che questa procedura memorizzata è stata completata, le query SQL che utilizzano le funzioniCONTAINS o SCORE o le procedure memorizzate di gestione utilizzate per la manutenzione dell'indicerestituiscono un errore senza provare a contattare un server di ricerca testo.

Nota: viene consentito il completamento delle procedure di gestione e delle query SQL che utilizzano lefunzioni incorporate CONTAINS o SCORE che erano in esecuzione quando è stato richiamatoSYSTS_STOP.

Le modifiche alle tabelle di base dell'indice continuano a essere registrate, anche quando il server vienearrestato. Tuttavia, gli aggiornamenti pianificati dell'indice non vengono eseguiti finché non vienerichiamato SYSPROC.SYSTS_START.

Autorizzazione

L'ID utente sotto il quale viene richiamata la procedura memorizzata deve disporre dei seguenti privilegi:v L'autorizzazione *EXECUTE sulla procedurav I privilegi SELECT e UPDATE sulla tabella SYSTEXTSERVERS.v L'autorizzazione *EXECUTE sulla libreria QSYS2 del file SYSTEXTSERVERS.v L'autorizzazione *JOBCTL o l'utilizzo della funzione speciale di sicurezza QIBM_DB_SQLADM.

Per informazioni sulle autorizzazioni di sistema corrispondenti ai privilegi SQL, consultare GRANT(Table or View Privileges).

Sintassi

�� SYSTS_STOP ( )idservernomealias

��

OmniFind Text Search Server 17

Page 24: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il qualificativo dello schema è SYSPROC.

Parametro

idserver o nomealiasSpecifica l'identificativo del server da arrestare. Un idserver o un nomealias server è una stringa. Se nonviene fornito alcun identificativo, il valore predefinito consiste nell'arresto di tutti i server. La stringaidentificativo deve essere un idserver valido che esiste nella colonna SERVERID oppure un nomealiasserver valido che esiste nella colonna ALIASNAME della tabella QSYS2.SYSTEXTSERVERS. Sel'identificativo può essere convertito in un valore intero, esso viene interpretato come un idserver. Sel'identificativo non può essere convertito in un valore intero, esso viene interpretato come unnomealias server.

Il tipo di dati di questo parametro è VARCHAR(128).

Per arrestare tutti i server di produzione:CALL SYSPROC.SYSTS_STOP().

Per arrestare un server con un ID di 1:CALL SYSPROC.SYSTS_STOP(1)

Per arrestare un server con un nome alias di "LOCAL_SERVER":CALL SYSPROC.SYSTS_STOP('LOCAL_SERVER')

Per arrestare un server con un nome alias di "local_server":CALL SYSPROC.SYSTS_STOP('"local_server"')

Concetti correlati:“Nome alias di server” a pagina 11È possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

SYSPROC.SYSTS_CREATEÈ possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.

L'indice di ricerca testo viene creato su uno dei server di ricerca testo elencati nella tabellaQSYS2.SYSTEXTSERVERS. L'indice di ricerca testo non viene aggiornato in modo sincrono quando latabella DB2 viene aggiornata. Una registrazione delle modifiche alla colonna tabella DB2 viene invececatturata dai trigger e inserita in una tabella di gestione temporanea.

18 IBM i: OmniFind Text Search Server per DB2 per i

Page 25: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Nota: questa procedura memorizzata definisce solo l'indice di ricerca testo. L'indice di ricerca testo noncontiene alcun dato finché non viene eseguito il primo richiamo della procedura memorizzataSYSPROC.SYSTS_UPDATE per il nuovo indice di ricerca testo. Si crea l'indice di ricerca testo dopo lacompilazione iniziale della tabella. Creando l'indice di ricerca testo dopo la compilazione iniziale dellatabella, si evita l'attivazione di trigger di modifica prima di un aggiornamento di indice iniziale.

Prerequisiti

Prima della chiamata della procedura memorizzata SYSPROC.SYSTS_CREATE, verificare i seguentiprerequisiti:v Le funzioni di ricerca testo DB2 sono state avviate richiamando la procedura memorizzata

SYSPROC.SYSTS_START ed è in esecuzione almeno un server di ricerca testo.v La tabella include una colonna definita come chiave primaria, indice univoco o ROWID.v La tabella QSYS2.SYSTEXTSERVERS contiene almeno una voce.

Autorizzazione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguentiprivilegi:v Il privilegio di creare nello schema. Per ulteriori informazioni, consultare Authorization, privileges and

object ownership.v L'autorizzazione di gestione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguentiprivilegi:v Le seguenti autorizzazioni di sistema:

– *USE al comando CRTLF (Creazione file logico)– *CHANGE al dizionario di dati se la libreria in cui viene creato l'indice di testo è uno schema SQL

con un dizionario di dativ L'autorizzazione di gestione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere anche almeno uno deiseguenti privilegi:v Per la tabella cui si fa riferimento:

– Il privilegio INDEX sulla tabella– L'autorizzazione di sistema *EXECUTE sulla libreria che contiene la tabella

v L'autorizzazione di gestionev Se vengono specificati dei nomi SQL ed esiste un profilo utente che ha lo stesso nome della libreria in

cui viene creato l'indice di testo, e tale nome è diverso dall'ID autorizzazione dell'istruzione, i privilegiappartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguenti privilegi:– L'autorizzazione di sistema *ADD al profilo utente con questo nome– L'autorizzazione di gestione

Se si fa riferimento a un tipo distinto, i privilegi appartenenti all'ID autorizzazione dell'istruzione devonoincludere almeno uno dei seguenti privilegi:v Per ogni tipo distinto identificato nell'istruzione:

– Il privilegio USAGE sul tipo distinto e– L'autorizzazione di sistema *EXECUTE sulla libreria che contiene il tipo distinto

v L'autorizzazione di gestione

OmniFind Text Search Server 19

Page 26: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Se la colonna su cui è stato generato l'indice di ricerca testo contiene una procedura del campo, l'IDautorizzazione deve disporre di uno dei seguenti elementiv L'autorizzazione *EXECUTE per il programma ev L'autorizzazione *EXECUTE sulla libreria che contiene il programma

Oppurev L'autorizzazione di gestione

Per informazioni sulle autorizzazioni di sistema corrispondenti ai privilegi SQL, consultare GRANT(Table or View Privileges).

Sintassi

�� SYSTS_CREATE ( schemaIndicenull

, nomeIndice , origineTesto , opzioni ) ��

Il qualificativo dello schema è SYSPROC.

Parametri

schemaIndiceIdentifica lo schema dell'indice di ricerca testo. Se questo parametro è null, viene utilizzato il valoredel registro speciale CURRENT SCHEMA per il programma chiamante. Questo valore deve essere unnome SQL valido.

Nota: Racchiudere i nomi tra virgolette se sono in conflitto con parole chiave SQL oppure OmniFindche possono essere utilizzate.

Il tipo di dati di questo parametro è VARCHAR(128).

nomeIndiceIdentifica il nome dell'indice di ricerca testo. Il nome dell'indice di ricerca testo, insieme allo schemadi indice, identifica in modo univoco l'indice di ricerca testo nel sottosistema DB2. È necessariospecificare un valore non null per questo parametro. Questo valore deve essere un nome SQL valido.

Nota: racchiudere i nomi tra virgolette se sono in conflitto con parole chiave SQL oppure OmniFindche possono essere utilizzate.

Il tipo di dati per questo parametro è VARCHAR(128).

origineTestoIdentifica la specifica di tabella e colonna per l'origine di testo del documento. Questo parametro puòincludere delle UDF (user-defined function). È necessario specificare un valore non null per questoparametro.

Il tipo di dati per questo parametro è VARCHAR(1024).

origineTesto:

schemaTabella. nomeTabella ( nome-colonna-testo )nome-funzione ( nome-colonna-testo )

schema-funzione .

schemaTabellaIdentifica lo schema della tabella su cui viene creato l'indice di ricerca testo.

20 IBM i: OmniFind Text Search Server per DB2 per i

Page 27: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Nota: racchiudere i nomi tra virgolette se sono in conflitto con parole chiave SQL oppureOmniFind che possono essere utilizzate.

nomeTabellaIdentifica il nome della tabella di testo che contiene la colonna su cui viene creato l'indice diricerca testo esterno.

Note:

v Le viste e i file logici non sono supportati.v Un alias deve puntare a una tabella o a un singolo membro del file fisico.v Racchiudere i nomi tra virgolette se sono in conflitto con parole chiave SQL oppure

OmniFind.

nome-colonna-testoIdentifica il nome della colonna che contiene il testo utilizzato per creare l'indice di ricercatesto. Questa colonna deve essere di tipo CHAR, CHAR FOR BIT DATA, BINARY,VARCHAR, VARCHAR FOR BIT DATA, VARBINARY, CLOB, DBCLOB, BLOB, XML,GRAPHIC o VARGRAPHIC. Se il tipo di dati non è uno di questi tipi di dati, è possibilespecificare una funzione esterna che restituisce un tipo di dati supportato.

Note:

v È consentito un solo indice di ricerca testo per una colonna. Se esiste un indice di ricercatesto per la colonna, viene restituito SQLCODE-20427.

v Racchiudere i nomi tra virgolette se sono in conflitto con parole chiave SQL oppureOmniFind.

schema-funzione. nome-funzioneIdentifica lo schema e il nome di una funzione incorporata o di una UDF (user-definedfunction). La funzione può essere utilizzata per modificare un documento di testomemorizzato nella colonna. La funzione può anche essere utilizzata per accedere aidocumenti di testo in una colonna che non è di un tipo di dati supportato. In alternativa, lafunzione può essere utilizzata per accedere a un documento memorizzato altrove. Lafunzione ha un parametro di immissione per il tipo di dati della colonna di testo. Un esempioè un numero intero che funge da chiave esterna al contenuto del documento in un'altratabella. La funzione restituisce un valore di uno dei tipi di dati supportati da OmniFind TextSearch per DB2 per i. La funzione trasforma il contenuto della colonna di testo nel contenutodel documento indicizzato.

Note:

v Le funzioni cast e le funzioni con più di un argomento non sono consentite.v Racchiudere i nomi tra virgolette se sono in conflitto con parole chiave SQL oppure

OmniFind che possono essere utilizzate.

opzioniUna stringa di caratteri che specifica le varie opzioni disponibili per questa procedura memorizzata.

Il tipo di dati per questo parametro è VARCHAR(32000).

Opzioni:

informazioni-predefinite-testo caratteristiche-aggiornamento opzioni-configurazione-indice

informazioni-predefinite-testo:

OmniFind Text Search Server 21

Page 28: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

CCSID ccsid LANGUAGE lingua FORMAT formato

informazioni-predefinite-testoSpecifica il CCSID (coded character set identifier) utilizzato quando si indicizzano i documenti ditesto binario. Specifica anche la lingua utilizzata quando si elaborano i documenti e il formato deidocumenti di testo nella colonna.

CCSID ccsidSpecifica il CCSID (coded character set identifier) utilizzato per un indice di ricerca testo inuna colonna con un tipo di dati binario. Il valore predefinito è 1208 (UTF-8) e viene presodalla tabella QSYS2.SYSTEXTDEFAULTS. Tutti i CCSID supportati per la conversione inUTF-8 dai parametri di conversione IBM i sono consentiti per questo parametro.

Questo parametro viene ignorato per un indice di ricerca testo in una colonna con un tipo didati non binario. Le colonne di testo ereditano il CCSID dalla specifica della tabella. Il valoreccsid viene ignorato quando il valore formato è impostato su INSO.

LANGUAGE linguaSpecifica la lingua utilizzata da OmniFind Text Search Server per DB2 per i per l'elaborazionelinguistica dei documenti di testo. Il valore predefinito è en_US (inglese). Se si specifica ilvalore per questo parametro come AUTO, OmniFind Text Search Server per DB2 per i provaa determinare la lingua.

Importante: se la lingua dei documenti non è l'inglese, non utilizzare il valore predefinito dien_US. Modificare il valore nella lingua dei documenti; altrimenti, l'elaborazione linguisticanon funziona come previsto.

FORMAT formatoIdentifica il formato dei documenti di testo nella colonna, come ad esempio HTML.OmniFind Text Search Server per DB2 per i deve conoscere il formato, o il tipo di contenuto,dei documenti di testo che si intende indicizzare e sottoporre a ricerche. Se non si specifica ilparametro formato, il valore predefinito viene preso dalla colonna FORMAT nella tabellaQSYS2.SYSTEXTDEFAULTS. I valori di formato supportati sono TEXT, HTML, XML e INSO.

Il valore di formato INSO consente a OmniFind Text Search Server per DB2 per i dideterminare il formato. In questo caso, il valore ccsid viene ignorato. Se OmniFind Text SearchServer per DB2 per i non può determinare il formato del documento, un errore di documentoviene annotato nella registrazione lavoro durante l'elaborazione da parte della proceduramemorizzata SYSPROC.SYSTS_UPDATE.

Nota: se non si specifica il parametro formato in fase di creazione dell'indice su una colonnadi tipo di dati XML, il valore predefinito è XML. Se si specifica il parametro formato comeTEXT o INSO, la capacità di ricerca XML non è disponibile su questo indice. Inoltre, nellaregistrazione lavoro viene visualizzato un messaggio di avvertenza.

caratteristiche-aggiornamento:

NONEUPDATE FREQUENCY < frequenza-aggiornamento >

UPDATE MINIMUM numero-minimo-modifiche

caratteristiche-aggiornamentoSpecifica la frequenza di aggiornamenti automatici all'indice di ricerca testo. Specifica anche ilnumero minimo di modifiche ai documenti di testo prima che l'indice di ricerca testo vengaaggiornato in modo incrementale alla data/ora specificata.

UPDATE FREQUENCY frequenza-aggiornamentoSpecifica quando eseguire gli aggiornamenti automatici all'indice di ricerca testo. Il valore

22 IBM i: OmniFind Text Search Server per DB2 per i

Page 29: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

predefinito è NONE. Questa opzione potrebbe essere utile per una colonna di testo in cui nonci sono ulteriori modifiche. Il formato dell'opzione frequenza-aggiornamento supporta dueformati differenti.

frequenza-aggiornamento (formato 1):

� � �

NONED ( * ) H ( * ) M ( * )

, , ,

0..6 0..23 0..590..6 0..23 0..59

NONESe viene specificato NONE, non vengono eseguiti ulteriori aggiornamenti dell'indice.L'aggiornamento deve essere avviato manualmente. Questa opzione può essere utileper una colonna di testo in cui non sono pianificate ulteriori modifiche.

D Specifica il giorno o i giorni della settimana in cui viene aggiornato l'indice. Unasterisco (*) specifica tutti i giorni. 0 specifica domenica.

H Specifica l'ora o le ore in cui viene aggiornato l'indice. Un asterisco (*) specifica tuttele ore.

M Specifica il minuto o i minuti in cui viene aggiornato l'indice. Non è possibilespecificare un asterisco (*). La frequenza di aggiornamento minima è 5 minuti.

Esempio: questo esempio specifica che l'aggiornamento dell'indice viene eseguito ogni 30minuti.UPDATE FREQUENCY D(*) H(*) M(0,30)

frequenza-aggiornamento (formato 2, cronologico):

< minuto> < ora> <giornoDelMese> <meseDell'Anno> <giornoDellaSettimana>

Il formato dell'opzione frequenza-aggiornamento (cronologico) è un elenco di cinque valoriseparati da uno spazio. I cinque valori rappresentano i minuti, le ore, i giorni del mese, i mesidell'anno e i giorni della settimana, con inizio la domenica.

Se si specifica un intervallo di valori oppure un asterisco, è possibile specificare un valore dipasso utilizzando una barra (/) alla fine dell'intervallo definito.

Esempio: questo esempio specifica che l'aggiornamento dell'indice deve essere eseguito ogniquarto d'ora (0,15,30,45) nelle ore pari comprese tra le 8 e le 18:45 (8-18/2 è equivalente a8,10,12,14,16,18), dal lunedì al venerdì ogni mese dell'anno (* * 1-5).0,15,30,45 8-18/2 * * 1-5

minuto Specifica i minuti dell'ora in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per un intervallo di ogni 5 minuti oppure èpossibile specificare un numero intero compreso tra 0 e 59. Non è possibile ripetere ivalori. La frequenza di aggiornamento minima è 5 minuti. Il valore 1,4,8 non è valido.

OmniFind Text Search Server 23

Page 30: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

frequenza-aggiornamento (minuti):

*/ 0...59

,

0...59 - 0...59/ 0...59

0...59

ora Specifica le ore del giorno in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni ora oppure è possibile specificare unnumero intero compreso tra 0 e 23. Non è possibile ripetere i valori.

frequenza-aggiornamento (ore):

*/ 0...23

,

0...23 - 0...23/ 0...23

0...23

giornoDelMeseSpecifica i giorni del mese in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni giorno oppure è possibile specificare unnumero intero compreso tra 1 e 31. Non è possibile ripetere i valori.

frequenza-aggiornamento (giornoDelMese):

*/ 1...31

,

1...31 - 1...31/ 1...31

1...31

meseDell'AnnoSpecifica i mesi dell'anno in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni mese oppure è possibile specificare unnumero intero compreso tra 1 e 12. Non è possibile ripetere i valori.

frequenza-aggiornamento (meseDell'Anno):

*/ 1...12

,

1...12 - 1...12/ 1...12

1...12

giornoDellaSettimanaSpecifica i giorni della settimana in cui deve essere aggiornato l'indice di ricerca testo.È possibile specificare un asterisco (*) per ogni giorno oppure è possibile specificareun numero intero 0 - 7. Sia 0 sia 7 sono valori validi per indicare la domenica. Non èpossibile ripetere i valori.

24 IBM i: OmniFind Text Search Server per DB2 per i

Page 31: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

frequenza-aggiornamento (giornoDellaSettimana):

*/ 0...7

,

0...7 - 0...7/ 0...7

0...7

UPDATE MINIMUM numero-minimo-modificheSpecifica il numero minimo di modifiche di record apportate alla tabella sottostante primache l'indice di ricerca testo venga aggiornato in modo incrementale alla data/ora specificatanell'opzione frequenza-aggiornamento. Il valore deve essere un numero intero compreso tra 1 e2147483647. Il valore predefinito viene preso dalla colonna UPDATEMINIMUM nella tabellaQSYS2.SYSTEXTDEFAULTS.

Questa opzione viene ignorata quando si aggiorna l'indice di ricerca testo, a meno che non sispecifichi l'opzione USING UPDATE MINIMUM nella procedura memorizzataSYSPROC.SYSTS_UPDATE.

opzioni-configurazione-indice:

INDEX CONFIGURATION ( �

,

opzione valore )

ROW_COLUMN_ACCESS:

NOT SECURED SECURED

opzioni-configurazione-indiceSpecifica i valori specifici per l'indice aggiuntivi come coppie opzione-valore. È necessarioracchiudere i valori stringa tra virgolette singole. Una virgoletta singola in un valore stringa deveessere rappresentato da due virgolette singole consecutive.

CJKSEGMENTATIONSpecifica il metodo di segmentazione da utilizzare quando si indicizzano i documenti per lelingue CJK (Chinese, Japanese, Korean, ossia cinese, giapponese e coreano). I valori supportatisono MORPHOLOGICAL e NGRAM. Se il valore CJKSEGMENTATION non viene specificato,viene utilizzato il valore predefinito. Il valore predefinito viene specificato dal valoreDEFAULTNAME nella tabella QSYS2.SYSTEXTDEFAULTS.

COMMENTSpecifica un commento che viene memorizzato nella colonna REMARKS della tabella digestione QSYS2.SYSTEXTINDEXES e come la descrizione della raccolta OmniFind Text SearchServer per DB2 per i.

Il valore per questa opzione è un valore stringa inferiore o uguale a 512 byte.

IGNOREEMPTYDOCSSpecifica se rappresentare i documenti vuoti nell'indice di ricerca testo. I documenti vuotisono i documenti con una stringa vuota o un valore null.

I valori supportati per questa opzione sono 0 (zero) e 1. Il valore predefinito è 1.

OmniFind Text Search Server 25

Page 32: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Se questa opzione è impostata su 1, i documenti vuoti non sono rappresentati nell'indice diricerca testo. Se si utilizza questa opzione e si modifica il contenuto del documento in vuoto,il successivo aggiornamento incrementale cancella i documenti dall'indice di ricerca testo.

KEYCOLUMNSpecifica il nome di una colonna univoca da utilizzare come colonna chiave nell'indice ditesto. La colonna chiave viene utilizzata per associare i dati nell'indice di testo a undocumento o a una riga nella tabella di base. La colonna specificata deve avere un vincolo dichiave primaria o un indice univoco. Se KEYCOLUMN non viene specificato, viene utilizzatala colonna ROWID dalla tabella, se ne esiste una. Altrimenti, viene utilizzata la chiaveprimaria definita sulla tabella.

SERVERSpecifica l'ID o il nome alias del server da utilizzare per memorizzare l'indice di ricerca testo.Se viene utilizzato un ID, il valore è un numero intero che deve esistere nella colonnaSERVERID del catalogo QSYS2.SYSTEXTSERVERS. Se viene utilizzato un nome alias, il valoreè una stringa che deve esistere nella colonna ALIASNAME del catalogoQSYS2.SYSTEXTSERVERS. Se SERVER non viene specificato, il valore predefinito consiste nelselezionare il server con il numero minore di indici di ricerca testo dai server nella tabellaQSYS2.SYSTEXTSERVERS dove il parametro SERVERSTATUS è impostato su 0 (zero); questosignifica che il server è disponibile.

UPDATEAUTOCOMMITSpecifica la frequenza con la quale viene eseguita un'operazione di commit quando sirichiamano i documenti durante un aggiornamento dell'indice. Il valore 0 (zero) significa cheun'operazione di commit viene eseguita solo alla fine dell'elaborazione.

Il valore deve essere un numero intero compreso tra 0 (zero) e 2147483647. Il valorepredefinito è 100.

Suggerimento per le prestazioni: il valore di UPDATEAUTOCOMMIT può avere un impattonotevole sulle prestazioni degli aggiornamenti dell'indice. L'operazione di commit che vieneeseguita all'intervallo specificato assicura un checkpoint congruente da cui riavviarel'aggiornamento dell'indice, se viene interrotto. Tuttavia, il commit sospende anchetemporaneamente il processo di aggiornamento. L'aumento del valoreUPDATEAUTOCOMMIT (o la sua impostazione su 0) può migliorare notevolmente leprestazioni dell'aggiornamento, soprattutto l'aggiornamento iniziale. Il valore specificato devebilanciare le esigenze relative alle prestazioni e quelle relative alla recuperabilità, sulla basedella frequenza degli aggiornamenti dell'indice.

ROW_COLUMN_ACCESSSpecifica se l'indice di ricerca testo è considerato sicuro per il controllo di accesso riga e ilcontrollo di accesso colonna.

NOT_SECUREDSpecifica che l'indice di ricerca testo è considerato non sicuro per il controllo di accessoriga e il controllo di accesso colonna. Questo è il valore predefinito

La tabella di base per l'indice non deve avere un'autorizzazione o una maschera attiva.

SECUREDSpecifica che l'indice è considerato sicuro per il controllo di accesso riga e il controllo diaccesso colonna.

Un indice di ricerca testo deve essere definito come protetto per poter essere generato suuna tabella con un'autorizzazione o una maschera di colonna attiva. Se viene fattoriferimento ad una funzione per accedere a dei dati o modificarli in una colonna conmaschera, la funzione deve essere definita come protetta. L'ID autorizzazione devedisporre dell'autorizzazione DB_SECADMIN per creare un indice di ricerca testo conl'attributo SECURED.

26 IBM i: OmniFind Text Search Server per DB2 per i

Page 33: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Quando un indice di ricerca testo viene creato su informazioni sensibili, è necessarioeffettuare ulteriori considerazioni:

L'amministratore del database deve tenere presente che i dati specificati come colonnechiave per l'indice di ricerca testo verranno memorizzati in una tabella di gestionetemporanea in QSYS2 ed inviati al server di ricerca testo utilizzando i protocolli di rete.

L'amministratore del database deve tenere presente che i dati indicizzati da un indice diricerca testo vengono inviati al server di ricerca testo tramite i protocolli di rete ememorizzati all'esterno di DB2 sul server di ricerca testo.

Valori predefiniti per il parametro opzioni

Quando si installa OmniFind Text Search per DB2 per i, la tabella QSYS2.SYSTEXTDEFAULTS vienecreata e compilata con i valori predefiniti per il parametro opzioni della procedura memorizzataSYSPROC.SYSTS_CREATE.

La seguente tabella elenca le opzioni, i valori predefiniti e le descrizioni delle opzioni.

Tabella 2. Valori predefiniti per il parametro opzioni

OpzioneValorepredefinito Descrizione

CCSID 1208 Specifica il CCSID (coded character set identifier)utilizzato quando vengono indicizzati i documenti ditesto binario.

CJKSEGMENTATION NGRAM Specifica il metodo di segmentazione da utilizzarequando si indicizzano i documenti per le lingue CJK(Chinese, Japanese, Korean, ossia cinese, giapponese ecoreano).

LANGUAGE en_US Specifica la lingua utilizzata per elaborare i documentidi testo.

FORMAT TEXT Identifica il formato dei documenti di testo nellacolonna. Il formato predefinito è il testo semplice ameno che il tipo di dati non sia XML.

UPDATEFREQUENCY NONE Indica che non sono pianificati aggiornamentiautomatici.

UPDATEMINIMUM 1 Se almeno un documento è stato modificato dall'ultimoaggiornamento dell'indice, la procedura memorizzataSYSPROC.SYSTS_UPDATE avvia l'elaborazione.

IGNOREEMPTYDOCS 1 Specifica che i documenti vuoti (documenti con unastringa vuota o un valore null) non sono rappresentatinell'indice di ricerca testo. I campi di metadati perquesti documenti non sono disponibili per la ricerca.

UPDATEAUTOCOMMIT 100 Specifica la frequenza con la quale viene eseguitaun'operazione di commit quando i documenti vengonorichiamati durante un aggiornamento dell'indice.

MINIMUMUPDATEINTERVAL 5 Specifica gli intervalli per l'opzioneUPDATEFREQUENCY. Gli intervalli non possonoessere inferiori ai 5 minuti.

ROW_COLUMN_ACCESS NOT_SECURED Specifica se l'indice viene creato o meno come protetto.

USEREXITTHREADS 0 Riservato

Concetti correlati:“Formati di documento supportati” a pagina 6I dati di colonna di testo possono essere testo semplice, un documento HTML, un documento XML o

OmniFind Text Search Server 27

Page 34: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

qualsiasi documento riconosciuto dal motore di ricerca.“Tipi di dati supportati” a pagina 7I dati nelle colonne di testo che si desidera indicizzare, e sottoporre a ricerche, possono essere dati binario dati carattere.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.“Tabella di gestione QSYS2.SYSTEXTINDEXES” a pagina 111È possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.“Tabella di gestione QSYS2.SYSTEXTDEFAULTS” a pagina 110È possibile visualizzare i parametri e i valori predefiniti nella tabella di gestioneQSYS2.SYSTEXTDEFAULTS. Questa tabella viene creata quando si installa OmniFind Text Search per DB2per i.“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“Lingue supportate” a pagina 8È possibile specificare che i documenti di testo vengano elaborati utilizzando una specifica lingua.

SYSPROC.SYSTS_ALTERÈ possibile richiamare la procedura memorizzata SYSPROC.SYSTS_ALTER per modificare gli attributi diun indice creato da SYSPROC.SYSTS_CREATE. Vengono modificati solo gli attributi specificati in modoesplicito in questa procedura. Tutti gli altri attributi dell'indice rimangono inalterati.

È utile se occorre modificare gli attributi dell'indice, come ad esempio la frequenza di aggiornamento,dopo che l'indice è già stato creato.

Prerequisiti

Prima di richiamare la procedura memorizzata SYSPROC.SYSTS_ALTER, verificare il seguenteprerequisito:v L'indice di ricerca testo è stato creato richiamando la procedura memorizzata

SYSPROC.SYSTS_CREATE).

Autorizzazione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguentiprivilegi:v Il privilegio di creare nello schema. Per ulteriori informazioni, consultare Authorization, privileges and

object ownership.v L'autorizzazione di gestione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguentiprivilegi:v Le seguenti autorizzazioni di sistema:

– *USE al comando CRTLF (Creazione file logico)

28 IBM i: OmniFind Text Search Server per DB2 per i

Page 35: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

– *CHANGE al dizionario di dati se la libreria in cui viene creato l'indice di testo è uno schema SQLcon un dizionario di dati

v L'autorizzazione di gestione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere anche almeno uno deiseguenti privilegi:v Per la tabella cui si fa riferimento:

– Il privilegio INDEX sulla tabella– L'autorizzazione di sistema *EXECUTE sulla libreria che contiene la tabella

v L'autorizzazione di gestionev Se vengono specificati dei nomi SQL ed esiste un profilo utente che ha lo stesso nome della libreria in

cui viene creato l'indice di testo, e tale nome è diverso dall'ID autorizzazione dell'istruzione, i privilegiappartenenti all'ID autorizzazione dell'istruzione devono includere almeno una delle seguentiautorizzazioni:– L'autorizzazione di sistema *ADD al profilo utente con questo nome– L'autorizzazione di gestione

Se si fa riferimento a un tipo distinto, i privilegi appartenenti all'ID autorizzazione dell'istruzione devonoincludere almeno uno dei seguenti privilegi:v Per ogni tipo distinto identificato nell'istruzione:

– Il privilegio USAGE sul tipo distinto e– L'autorizzazione di sistema *EXECUTE sulla libreria che contiene il tipo distinto

v L'autorizzazione di gestione

Per informazioni sulle autorizzazioni di sistema corrispondenti ai privilegi SQL, consultare GRANT(Table or View Privileges).

Sintassi

�� SYSTS_ALTER ( schemaIndice , nomeIndice , opzioni ) ��

Il qualificativo dello schema è SYSPROC.

Parametri

schemaIndiceIdentifica lo schema dell'indice di ricerca testo. Se questo parametro è null, viene utilizzato il valoredel registro speciale CURRENT SCHEMA per il programma chiamante.

Il tipo di dati di questo parametro è VARCHAR(128).

nomeIndiceIdentifica il nome dell'indice di ricerca testo. Il nome dell'indice di ricerca testo, insieme allo schemadi indice, identifica in modo univoco l'indice di ricerca testo nel sottosistema DB2. È necessariospecificare un valore non null per questo parametro.

Il tipo di dati di questo parametro è VARCHAR(128).

opzioniUna stringa di caratteri che specifica le varie opzioni disponibili per questa procedura memorizzata.

Il tipo di dati di questo parametro è VARCHAR(32000).

Il parametro non può essere NULL.

OmniFind Text Search Server 29

Page 36: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

opzioni:

informazioni-funzione-ridenominazione caratteristiche-aggiornamento�

�opzioni-configurazione-indice

informazioni-funzione-ridenominazione:

RENAME FUNCTION nome-funzioneschema-funzione .

Specifica la UDF (user-defined function) da ridenominare.

schema-funzione.nome-funzioneSpecifica lo schema e il nome di una UDF (user-defined function).

Questa opzione viene utilizzata per modificare una funzione che è stata specificata in fase dicreazione di un indice. Se la funzione viene modificata, SYSTS_UPDATE utilizza la nuova funzioneper indicare la colonna di testo.

Se la funzione è stata modificata, SYSTS_UPDATE non modifica i dati dell'indice esistenti. Vengonoelaborati solo i nuovi dati modificati dopo l'ultimo aggiornamento.

caratteristiche-aggiornamento:

NONEUPDATE FREQUENCY frequenza-aggiornamento

UPDATE MINIMUM numero-minimo-modifiche

caratteristiche-aggiornamentoSpecifica la frequenza di aggiornamenti automatici all'indice di ricerca testo. Specifica anche ilnumero minimo di modifiche ai documenti di testo prima che l'indice di ricerca testo vengaaggiornato in modo incrementale alla data/ora specificata.

UPDATE FREQUENCY frequenza-aggiornamentoSpecifica quando eseguire gli aggiornamenti automatici all'indice di ricerca testo. Il valorepredefinito è NONE. Questa opzione potrebbe essere utile per una colonna di testo in cui nonci sono ulteriori modifiche. Il formato dell'opzione frequenza-aggiornamento supporta dueformati differenti.

frequenza-aggiornamento (formato 1):

� � �

NONED ( * ) H ( * ) M ( * )

, , ,

0..6 0..23 0..590..6 0..23 0..59

NONESe viene specificato NONE, non vengono eseguiti ulteriori aggiornamenti dell'indice.L'aggiornamento deve essere avviato manualmente. Questa opzione può essere utileper una colonna di testo in cui non sono pianificate ulteriori modifiche.

D Specifica il giorno o i giorni della settimana in cui viene aggiornato l'indice. Unasterisco (*) specifica tutti i giorni. 0 specifica domenica.

30 IBM i: OmniFind Text Search Server per DB2 per i

Page 37: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

H Specifica l'ora o le ore in cui viene aggiornato l'indice. Un asterisco (*) specifica tuttele ore.

M Specifica il minuto o i minuti in cui viene aggiornato l'indice. Non è possibilespecificare un asterisco (*). La frequenza di aggiornamento minima è 5 minuti.

Esempio: questo esempio specifica che l'aggiornamento dell'indice viene eseguito ogni 30minuti.UPDATE FREQUENCY D(*) H(*) M(0,30)

frequenza-aggiornamento (formato 2, cronologico):

< minuto> < ora> <giornoDelMese> <meseDell'Anno> <giornoDellaSettimana>

Il formato dell'opzione frequenza-aggiornamento (cronologico) è un elenco di cinque valoriseparati da uno spazio. I cinque valori rappresentano i minuti, le ore, i giorni del mese, i mesidell'anno e i giorni della settimana, con inizio la domenica.

Se si specifica un intervallo di valori oppure un asterisco, è possibile specificare un valore dipasso utilizzando una barra (/) alla fine dell'intervallo definito.

Esempio: questo esempio specifica che l'aggiornamento dell'indice deve essere eseguito ogniquarto d'ora (0,15,30,45) nelle ore pari comprese tra le 8 e le 18:45 (8-18/2 è equivalente a8,10,12,14,16,18), dal lunedì al venerdì ogni mese dell'anno (* * 1-5).0,15,30,45 8-18/2 * * 1-5

minuto Specifica i minuti dell'ora in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per un intervallo di ogni 5 minuti oppure èpossibile specificare un numero intero compreso tra 0 e 59. Non è possibile ripetere ivalori. La frequenza di aggiornamento minima è 5 minuti. Il valore 1, 4 oppure 8 nonè consentito.

frequenza-aggiornamento (minuti):

*/ 0...59

,

0...59 - 0...59/ 0...59

0...59

ora Specifica le ore del giorno in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni ora oppure è possibile specificare unnumero intero compreso tra 0 e 23. Non è possibile ripetere i valori.

frequenza-aggiornamento (ore):

*/ 0...23

,

0...23 - 0...23/ 0...23

0...23

giornoDelMeseSpecifica i giorni del mese in cui deve essere aggiornato l'indice di ricerca testo. È

OmniFind Text Search Server 31

Page 38: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

possibile specificare un asterisco (*) per ogni giorno oppure è possibile specificare unnumero intero compreso tra 1 e 31. Non è possibile ripetere i valori.

frequenza-aggiornamento (giornoDelMese):

*/ 1...31

,

1...31 - 1...31/ 1...31

1...31

meseDell'AnnoSpecifica i mesi dell'anno in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni mese oppure è possibile specificare unnumero intero compreso tra 1 e 12. Non è possibile ripetere i valori.

frequenza-aggiornamento (meseDell'Anno):

*/ 1...12

,

1...12 - 1...12/ 1...12

1...12

giornoDellaSettimanaSpecifica i giorni della settimana in cui deve essere aggiornato l'indice di ricerca testo.È possibile specificare un asterisco (*) per ogni giorno oppure è possibile specificareun numero intero 0 - 7. Sia 0 sia 7 sono valori validi per indicare la domenica. Non èpossibile ripetere i valori.

frequenza-aggiornamento (giornoDellaSettimana):

*/ 0...7

,

0...7 - 0...7/ 0...7

0...7

UPDATE MINIMUM numero-minimo-modificheSpecifica il numero minimo di modifiche di record apportate alla tabella sottostante primache l'indice di ricerca testo venga aggiornato in modo incrementale alla data/ora specificatanell'opzione frequenza-aggiornamento. Il valore deve essere un numero intero compreso tra 1 e2147483647.

opzioni-configurazione-indice:

INDEX CONFIGURATION ( �

,

opzione valore )

32 IBM i: OmniFind Text Search Server per DB2 per i

Page 39: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

ROW_COLUMN_ACCESS:

NOT SECURED SECURED

COMMENTSpecifica un commento che viene memorizzato nella colonna REMARKS della tabella di gestioneQSYS2.SYSTEXTINDEXES e come la descrizione della raccolta OmniFind Text Search Server perDB2 per i.

Il valore per questa opzione è un valore stringa inferiore o uguale a 512 byte.

UPDATEAUTOCOMMITSpecifica la frequenza con la quale viene eseguita un'operazione di commit quando si richiamanoi documenti durante un aggiornamento dell'indice. Il valore 0 (zero) significa che un'operazionedi commit viene eseguita solo alla fine dell'elaborazione.

Il valore deve essere un numero intero compreso tra 0 (zero) e 2147483647.

Suggerimento per le prestazioni: il valore di UPDATEAUTOCOMMIT può avere un impattonotevole sulle prestazioni degli aggiornamenti dell'indice. L'operazione di commit che vieneeseguita all'intervallo specificato assicura un checkpoint congruente da cui riavviarel'aggiornamento dell'indice, se viene interrotto. Tuttavia, il commit sospende anchetemporaneamente il processo di aggiornamento. L'aumento del valore UPDATEAUTOCOMMIT(o la sua impostazione su 0) può migliorare notevolmente le prestazioni dell'aggiornamento,soprattutto l'aggiornamento iniziale. Il valore specificato deve bilanciare le esigenze relative alleprestazioni e quelle relative alla recuperabilità, sulla base della frequenza degli aggiornamentidell'indice.

ROW_COLUMN_ACCESSSpecifica se l'indice di ricerca testo è considerato sicuro per il controllo di accesso riga e ilcontrollo di accesso colonna.

NOT_SECUREDSpecifica che l'indice di ricerca testo è considerato non sicuro per il controllo di accesso riga eil controllo di accesso colonna. Questo è il valore predefinito

La tabella di base per l'indice non deve avere un'autorizzazione o una maschera attiva.

SECUREDSpecifica che l'indice è considerato sicuro per il controllo di accesso riga e il controllo diaccesso colonna.

Un indice di ricerca testo deve essere definito come protetto per poter essere generato su unatabella con un'autorizzazione o una maschera di colonna attiva. Se viene fatto riferimento aduna funzione per accedere a dei dati o modificarli in una colonna con maschera, la funzionedeve essere definita come protetta. L'ID autorizzazione deve disporre dell'autorizzazioneDB_SECADMIN per creare un indice di ricerca testo con l'attributo SECURED.

Quando un indice di ricerca testo viene creato su informazioni sensibili, è necessarioeffettuare ulteriori considerazioni:

L'amministratore del database deve tenere presente che i dati specificati come colonne chiaveper l'indice di ricerca testo verranno memorizzati in una tabella di gestione temporanea inQSYS2 ed inviati al server di ricerca testo utilizzando i protocolli di rete.

L'amministratore del database deve tenere presente che i dati indicizzati da un indice diricerca testo vengono inviati al server di ricerca testo tramite i protocolli di rete e memorizzatiall'esterno di DB2 sul server di ricerca testo.

OmniFind Text Search Server 33

Page 40: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Suggerimenti: se gli utenti modificano un indice da SECURED a NOT SECURED, gli utenti devonoaccertarsi che la tabella di base non abbia una maschera di autorizzazione attiva. Oppure verrà generatoun errore.Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.“Tabella di gestione QSYS2.SYSTEXTINDEXES” a pagina 111È possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.

SYSPROC.SYSTS_DROPÈ possibile richiamare la procedura memorizzata SYSPROC.SYSTS_DROP per eliminare un indice diricerca testo definito utilizzando la procedura memorizzata SYSPROC.SYSTS_CREATE.

Si consiglia di eliminare un indice di ricerca testo utilizzando la procedura memorizzataSYSPROC.SYSTS_DROP prima di eliminare la tabella.

L'eliminazione della vista che rappresenta l'indice di ricerca testo, anche come risultato di un'istruzioneDROP TABLE CASCADE, prova a eliminare l'indice di ricerca testo. Tuttavia, poiché l'indice di ricercatesto non può essere eliminato sotto il controllo del commit, la vista SQL non può essere eliminata sotto ilcontrollo del commit.

Se non è possibile raggiungere il server di ricerca testo, la raccolta sul server potrebbe diventare orfana.Se si verifica questa condizione, la raccolta deve essere eliminata manualmente. Quando il server ènuovamente disponibile, utilizzare lo strumento di gestione OmniFind Text Search Server per DB2 per iper eliminare la raccolta sul server.

In “Strumenti di gestione” a pagina 75, è possibile trovare informazioni sugli strumenti per identificaregli indici orfani e la procedura memorizzata STSPROC.SYSTS_REMOVE oSYSPROC.SYSTS_CLEAR_INDEXES per eliminare gli indici orfani.

Prerequisiti

Prima di richiamare la procedura memorizzata SYSPROC.SYSTS_DROP, verificare i seguenti prerequisiti:v Le funzioni di ricerca testo DB2 sono state avviate richiamando la procedura memorizzata

SYSPROC.SYSTS_START.v L'indice di ricerca testo è stato creato richiamando la procedura memorizzata

SYSPROC.SYSTS_CREATE).v Assicurarsi che le seguenti procedure memorizzate non siano in esecuzione per l'indice di ricerca testo

che si desidera eliminare: SYSPROC.SYSTS_CREATE, SYSPROC.SYSTS_UPDATE eSYSPROC.SYSTS_DROP.

Autorizzazione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguentiprivilegi:

34 IBM i: OmniFind Text Search Server per DB2 per i

Page 41: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v Le seguenti autorizzazioni di sistema:– Le autorizzazioni di sistema *OBJOPR e *OBJEXIST sull'indice di testo da eliminare– L'autorizzazione di sistema *EXECUTE sulla libreria che contiene l'indice di testo da eliminare

v L'autorizzazione di gestione

Per informazioni sulle autorizzazioni di sistema corrispondenti ai privilegi SQL, consultare GRANT(Table or View Privileges).

Sintassi

�� SYSTS_DROP ( schemaIndicenull

, nomeIndice ) ��

Il qualificativo dello schema è SYSPROC.

Parametri

schemaIndiceIdentifica lo schema dell'indice di ricerca testo. Se questo parametro è null, viene utilizzato il valoredel registro speciale CURRENT SCHEMA per il programma chiamante.

Il tipo di dati di questo parametro è VARCHAR(128).

nomeIndiceIdentifica il nome dell'indice di ricerca testo. Il nome dell'indice di ricerca testo, insieme allo schemadi indice, identifica in modo univoco l'indice di ricerca testo nel sottosistema DB2. È necessariospecificare un valore non null per questo parametro.

Il tipo di dati di questo parametro è VARCHAR(128).Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“SYSPROC.SYSTS_UPDATE”È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.“SYSPROC.SYSTS_REMOVE” a pagina 78È possibile eliminare gli indici orfani con la procedura memorizzata SQL SYSPROC.SYSTS_REMOVE.“SYSTS_CLEAR_INDEXES” a pagina 80È possibile rimuovere gli indici orfani con la procedura memorizzata SQLSYSPROC.SYSTS_CLEAR_INDEXES. Un altro modo implicito è richiamare direttamente SYSTS_START,che tenta di eliminare gli indici orfani automaticamente.

SYSPROC.SYSTS_UPDATEÈ possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.

Poiché l'aggiornamento di un indice di ricerca testo è un'operazione di ampie dimensioni, l'indice diricerca testo non viene aggiornato in modo sincrono quando viene aggiornata la tabella DB2. Le

OmniFind Text Search Server 35

Page 42: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

modifiche alla colonna di tabella DB2 vengono invece catturate da un trigger e scritte in una tabella digestione temporanea. L'indice di ricerca testo viene aggiornato la volta successiva che la proceduramemorizzata SYSPROC.SYSTS_UPDATE viene richiamata o quando l'opzione UPDATE FREQUENCYindica che viene aggiornato. Pertanto, alcune richieste di ricerca potrebbero non riflettere degliaggiornamenti recenti alla tabella.

I risultati di questa procedura memorizzata verranno restituiti solo dopo che sarà stata completata tuttal'elaborazione dell'aggiornamento per l'indice di ricerca testo su OmniFind Text Search Server per DB2per i. La durata dipende dal numero di voci presenti nella tabella di gestione temporanea quando è statarichiamata SYSTS_UPDATE. Durante il processo di aggiornamento, continua ad essere possibile eseguirericerche nell'indice di ricerca testo.

Se si è verificato un problema durante l'indicizzazione di un documento dalla tabella di base, la colonnadi tabella di gestione temporanea con TOBEDELETED ha un valore impostato su E (errore) o W(avvertenza). La colonna ERRORMSG contiene un valore per registrare i messaggi di errore. È possibilerichiamare questi record con una procedura memorizzata che include la seguente query:SELECT s.TOBEDELETED, s.ERRORMSG, based_on_columnsFROM based_on_table t INNER JOIN QSYS2.stagingtablesON (QQQ_TEXTSEARCH_KEY(t.k1, t.k2, t.k3, ...) = s.KEYID)WHERE s.TOBEDELETED IN(’E’,’W’)

In questo caso, based_on_columns è l'elenco di colonne che è necessario visualizzare dalla based_on_table.based_on_table è la tabella di cui si sta eseguendo l'indicizzazione. staging table è la tabella di gestionetemporanea elencata nei cataloghi per l'indice di ricerca testo. k1, k2, k3, ... è l'elenco di colonnechiave nella chiave primaria, nell'ID riga o nella chiave univoca utilizzati per creare l'indice di ricercatesto. ERRORMSG è una colonna che registra i messaggi di errore durante l'indicizzazione deldocumento. Una volta corretti gli errori per questi documenti, eseguire nuovamente l'aggiornamento.

Se un aggiornamento dell'indice viene richiesto mentre è già in esecuzione un aggiornamento per taleindice, viene restituito un errore. Per uno specifico indice è consentita l'esecuzione di un soloaggiornamento per volta.

Se un indice viene creato come SECURED, i dati senza maschera vengono richiamati dalla tabella di basee vengono indicizzati, come se non fosse stata creata alcuna maschera o autorizzazione su questa tabella.

Se sulla tabella di base è stata creata una procedura del campo, i dati originali senza maschera vengonoindicizzati.

Prerequisiti

Prima di richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE, verificare i seguentiprerequisiti:v L'indice di ricerca testo è stato creato richiamando la procedura memorizzata

SYSPROC.SYSTS_CREATE).v Le seguenti procedure memorizzate non sono in esecuzione per l'indice di ricerca testo che si desidera

aggiornare: SYSPROC.SYSTS_CREATE, SYSPROC.SYSTS_UPDATE e SYSPROC.SYSTS_DROP.v Il server di ricerca testo su cui risiede l'indice deve essere stato avviato utilizzando la procedura

memorizzata SYSTS_START. La colonna SERVERSTATUS in QSYS2.SYSTEXTSERVERS deve avere ilvalore '0' (avviato).

Autorizzazione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguentiprivilegi:

36 IBM i: OmniFind Text Search Server per DB2 per i

Page 43: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v Il privilegio di creare nello schema. Per ulteriori informazioni, consultare Authorization, privileges andobject ownership.

v L'autorizzazione di gestione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguentiprivilegi:v Le seguenti autorizzazioni di sistema:

– *USE al comando CRTLF (Creazione file logico)– *CHANGE al dizionario di dati se la libreria in cui viene creato l'indice di testo è uno schema SQL

con un dizionario di dativ L'autorizzazione di gestione

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere anche almeno uno deiseguenti privilegi:v Per la tabella cui si fa riferimento:

– Il privilegio INDEX sulla tabella– L'autorizzazione di sistema *EXECUTE sulla libreria che contiene la tabella

v L'autorizzazione di gestionev Se vengono specificati dei nomi SQL ed esiste un profilo utente che ha lo stesso nome della libreria in

cui viene creato l'indice di testo, e tale nome è diverso dall'ID autorizzazione dell'istruzione, i privilegiappartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno dei seguenti privilegi:– L'autorizzazione di sistema *ADD al profilo utente con questo nome– L'autorizzazione di gestione

Se si fa riferimento a un tipo distinto, i privilegi appartenenti all'ID autorizzazione dell'istruzione devonoincludere almeno uno dei seguenti privilegi:v Per ogni tipo distinto identificato nell'istruzione:

– Il privilegio USAGE sul tipo distinto e– L'autorizzazione di sistema *EXECUTE sulla libreria che contiene il tipo distinto

v L'autorizzazione di gestione

Se l'indice è stato creato da SYSTS_CREATE come indice SECURED, l'ID autorizzazione deve disporredell'autorizzazione DB_SECADMIN.

Per informazioni sulle autorizzazioni di sistema corrispondenti ai privilegi SQL, consultare GRANT(Table or View Privileges).

Sintassi

�� SYSTS_UPDATE ( schemaIndicenull

, nomeIndice , opzioni ) ��

Il qualificativo dello schema è SYSPROC.

Parametri

schemaIndiceIdentifica lo schema dell'indice di ricerca testo. Se questo parametro è null, viene utilizzato il valoredel registro speciale CURRENT SCHEMA per il programma chiamante.

Il tipo di dati di questo parametro è VARCHAR(128).

OmniFind Text Search Server 37

Page 44: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

nomeIndiceIdentifica il nome dell'indice di ricerca testo. Il nome dell'indice di ricerca testo insieme allo schemadi indice identifica in modo univoco l'indice di testo completo nel sottosistema DB2. È necessariospecificare un valore non null per questo parametro.

Il tipo di dati per questo parametro è VARCHAR(128).

opzioniUna stringa di caratteri che specifica l'opzione disponibile per questa procedura memorizzata.

L'opzione disponibile è USING UPDATE MINIMUM. Questa opzione utilizza le impostazioni USINGUPDATE MINIMUM specificate per la procedura memorizzata SYSPROC.SYSTS_CREATE. Avvia unaggiornamento incrementale solo se è stato raggiunto il numero specificato di modifiche. Il valorepredefinito consiste nell'avviare in modo incondizionato il processo di aggiornamento.

USING UPDATE MINIMUM:

USING UPDATE MINIMUM

Concetti correlati:“Troncamento di documenti” a pagina 15OmniFind Text Search Server per DB2 per i limita il numero di caratteri che può essere indicizzato perciascun documento di testo. A volte, questo limite di caratteri determina il troncamento di documenti ditesto di grandi dimensioni nell'indice di ricerca testo.Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“SYSPROC.SYSTS_DROP” a pagina 34È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_DROP per eliminare un indice diricerca testo definito utilizzando la procedura memorizzata SYSPROC.SYSTS_CREATE.

SYSPROC.SYSTS_SHUTDOWNÈ possibile richiamare la procedura memorizzata SYSPROC.SYSTS_SHUTDOWN per chiudere le funzionidi ricerca testo DB2®. Questa procedura memorizzata imposta il valore SERVERSTATUS nel catalogoQSYS2.SYSTEXTSERVERS su 1 (arrestato) ed inoltre termina i lavori del server di ricerca testo sul sistemahost.

Dopo che questa procedura memorizzata è stata completata, le query SQL che utilizzano le funzioniCONTAINS o SCORE o le procedure memorizzate di gestione utilizzate per la manutenzione dell'indicerestituiscono un errore senza provare a contattare un server di ricerca testo.

Le modifiche alla tabella di base dell'indice continuano ad essere registrate, anche quando il server vienechiuso. Tuttavia, gli aggiornamenti pianificati dell'indice non vengono eseguiti finché non vienerichiamato SYSPROC.SYSTS_START.

Autorizzazione

L'ID utente sotto il quale viene richiamata questa procedura memorizzata deve disporre dei seguentiprivilegi:

38 IBM i: OmniFind Text Search Server per DB2 per i

Page 45: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v L'autorizzazione *EXECUTE sulla procedura.v I privilegi SELECT e UPDATE sulla tabella SYSTEXTSERVERS.v L'autorizzazione *EXECUTE sulla libreria QSYS2 del file SYSTEXTSERVERS.v L'autorizzazione *JOBCTL o l'utilizzo della funzione speciale di sicurezza QIBM_DB_SQLADM.

Per informazioni sulle autorizzazioni di sistema corrispondenti ai privilegi SQL, consultare GRANT(Table or View Privileges).

Sintassi>>-SYSTS_SHUTDOWN--(--+-----------+--)-----------------------------><

+-idserver--+’-nomealias-’

Parametri

idserver o nomealiasSpecifica l'identificativo del server per eliminare gli indici orfani. Un idserver o un nomealias server èuna stringa. Se non viene fornito alcun identificativo, il valore predefinito consiste nell'eliminazionedegli indici orfani su tutti i server. La stringa identificativo deve essere un idserver valido che esistenella colonna SERVERID oppure un nomealias server valido che esiste nella colonna ALIASNAMEdella tabella QSYS2.SYSTEXTSERVERS. Se l'identificativo può essere convertito in un valore intero,esso viene interpretato come un idserver. Se l'identificativo non può essere convertito in un valoreintero, esso viene interpretato come un nomealias server.

Il tipo di dati di questo parametro è VARCHAR(128).

Esempiov Per chiudere tutti i server di produzione:

CALL SYSPROC.SYSTS_SHUTDOWN().

v Per chiudere un server con ID 1:CALL SYSPROC.SYSTS_SHUTDOWN(1)

v Per chiudere un server con nome alias "LOCAL_SERVER":CALL SYSPROC.SYSTS_SHUTDOWN(’LOCAL_SERVER’)

v Per chiudere un server con nome alias "local_server":CALL SYSPROC.SYSTS_SHUTDOWN(’local_server’)

Concetti correlati:“Nome alias di server” a pagina 11È possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

OmniFind Text Search Server 39

Page 46: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Ricerca con un indice di ricerca testoÈ possibile utilizzare la funzione CONTAINS e la funzione SCORE in un'istruzione SQL con OMNIFIND.CONTAINS e SCORE vengono utilizzate per eseguire ricerche su un indice di ricerca testo utilizzando icriteri di argomento di ricerca specificati. È anche possibile indicizzare, ed eseguire ricerche su,documenti XML.

CONTAINSÈ possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.

�� CONTAINS ( nome-colonna , argomento-ricerca, costante-stringa

(1)) ��

Note:

1 costante-stringa deve essere conforme alle regole per le opzioni argomento-ricerca.

opzioni-argomento-ricerca:

�(1)

QUERYLANGUAGE = valoreRESULTLIMIT = valore

OFFSYNONYM = ON

Note:

1 La stessa clausola non deve essere specificata più di una volta.

Lo schema è QSYS2.

nome-colonnaSpecifica un nome qualificato o non qualificato di una colonna che ha un indice di ricerca testo in cuideve essere eseguita la ricerca. La colonna deve esistere nella tabella o nella vista identificata nellaclausola FROM dell'istruzione. La colonna della tabella, o la colonna della tabella di base sottostantedella vista, deve avere un indice di ricerca testo associato (SQLSTATE 38H12). L'espressionesottostante della colonna di una vista deve essere un semplice riferimento di colonna alla colonna diuna tabella sottostante, direttamente o tramite un'altra vista nidificata.

argomento-ricercaSpecifica un'espressione che restituisce un valore stringa contenente i termini utilizzati nella ricerca.L'espressione non deve essere tutti spazi oppure una stringa vuota (SQLSTATE 38H14). La lunghezzaeffettiva della stringa non deve superare i 32704 byte. Questa lunghezza potrebbe essere limitataulteriormente da quanto supportato dal server di ricerca testo (SQLSTATE 38H10). Il valore vieneconvertito in Unicode prima di essere utilizzato per eseguire ricerche nell'indice di ricerca testo.

costante-stringaIdentifica una costante stringa che specifica le opzioni di argomento di ricerca effettive per lafunzione.

Le opzioni che possono essere specificate come parte delle opzioni-argomento-ricerca sono le seguenti:

QUERYLANGUAGE=valoreSpecifica la lingua della query. Il valore può essere uno qualsiasi dei codici lingua supportati.Se l'opzione QUERYLANGUAGE non viene specificata, il valore predefinito è il valore di

40 IBM i: OmniFind Text Search Server per DB2 per i

Page 47: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

lingua dell'indice di ricerca testo utilizzato quando è stata richiamata questa funzione. Se ilvalore di lingua dell'indice di ricerca testo è AUTO, il valore predefinito perQUERYLANGUAGE è en_US.

RESULTLIMIT=valoreSpecifica il numero massimo di risultati che deve essere restituito dal motore di ricercasottostante. Il valore può essere un valore intero compreso tra 1 e 2 147 483 647. Se non vienespecificata l'opzione RESULTLIMIT, non è effettivo alcun limite dei risultati per la query.

Questa funzione scalare potrebbe non essere richiamata per ciascuna riga della tabella dirisultati, a seconda del piano scelto dal programma di ottimizzazione. Questa funzione puòessere richiamata una volta per l'intera query al motore di ricerca sottostante. Viene restituitauna serie di risultati di tutte le chiavi primarie corrispondenti. Questa serie di risultati vienequindi unita alla tabella che contiene la colonna per identificare le righe di risultato. In questocaso, il valore RESULTLIMIT funziona come FETCH FIRST ?? ROWS dal motore di ricercatesto sottostante e può essere utilizzato come un'ottimizzazione. Se il motore di ricerca vienerichiamato per ciascuna riga del risultato perché quello è il piano migliore, l'opzioneRESULTLIMIT viene ignorata.

SYNONYM = OFF o SYNONYM = ONSpecifica se utilizzare un dizionario di sinonimi associato all'indice di ricerca testo. È possibileaggiungere un dizionario di sinonimi a una raccolta utilizzando lo strumento dei sinonimi.

OFF OFF è il valore predefinito.

ON Utilizzare il dizionario di sinonimi associato all'indice di ricerca testo.

Il risultato di una funzione è un numero intero esteso. Se il secondo argomento può essere null, ilrisultato può essere null. Se il secondo argomento è null, il risultato è il valore null.

Il risultato è 1 se il documento contiene una corrispondenza per i criteri di ricerca specificatinell'argomento di ricerca. Altrimenti, il risultato è 0. Il risultato è 0 anche se la colonna è null. Sel'argomento di ricerca è null, il risultato è il valore null.

CONTAINS è una funzione non deterministica.

Esempio 1

La seguente istruzione trova tutti gli impiegati che hanno �COBOL� nel loro curriculum.SELECT EMPNOFROM EMP_RESUMEWHERE RESUME_FORMAT = ’ascii’AND CONTAINS(RESUME, ’COBOL’) = 1

Esempio 2

L'argomento di ricerca non deve essere necessariamente una costante stringa. L'argomento di ricerca puòessere qualsiasi espressione stringa SQL, compresa una stringa contenuta in una variabile host. Laseguente istruzione cerca il termine esatto "ate" nella colonna COMMENT.

Nota: il termine "ate" deve essere delimitato tra virgolette in modo che venga cercato solo il termineesatto e che non vengano considerate le variazioni linguistiche.char search_arg[100]; /* input host variable */...EXEC SQL DECLARE C3 CURSOR FORSELECT CUSTKEYFROM K55ADMIN.CUSTOMERSWHERE CONTAINS(COMMENT, :search_arg)= 1

OmniFind Text Search Server 41

Page 48: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

ORDER BY CUSTKEY;strcpy(search_arg, "\"ate\""’);EXEC SQL OPEN C3;...

Esempio 3

La seguente istruzione trova 10 studenti in modo casuale che hanno scritto delle tesine in linea checontengono la frase "combustibile fossile" in spagnolo, ossia "combustible fósil." Questi studenti vengonoselezionati per un'intervista radiofonica. Utilizzare il dizionario di sinonimi che è stato creato per l'indicedi ricerca testo associato. Poiché occorrono solo 10 studenti, ottimizzare la query utilizzando l'opzioneRESULTLIMIT per limitare il numero di risultati dal server di ricerca testo sottostante.SELECT FIRSTNME, LASTNAME

FROM STUDENT_ESSAYSWHERE CONTAINS(TERM_PAPER, ’combustible fósil’,

’QUERYLANGUAGE= es_ES RESULTLIMIT = 10 SYNONYM=ON’) = 1

Attività correlate:“Ricerca su un indice di ricerca testo” a pagina 14È possibile eseguire una ricerca su un indice di ricerca testo utilizzando un'istruzione SQL con unafunzione CONTAINS o SCORE. I criteri di argomento di ricerca sono specificati nella funzione.Riferimenti correlati:“SCORE”È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.“Sintassi degli argomenti di ricerca” a pagina 44È possibile specificare un argomento di ricerca come una condizione di una ricerca per i termini neidocumenti di testo. È formato da parametri di ricerca e uno o più termini di ricerca. Le funzioni diricerca testo scalari SQL che utilizzano gli argomenti di ricerca sono CONTAINS e SCORE.

SCOREÈ possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

��(1)

SCORE ( nome-colonna , argomento-ricerca, costante-stringa

) ��

Note:

1 costante-stringa deve essere conforme alle regole per le opzioni argomento-ricerca.

opzioni-argomento-ricerca:

�(1)

QUERYLANGUAGE = valoreRESULTLIMIT = valore

OFFSYNONYM = ON

Note:

1 La stessa clausola non deve essere specificata più di una volta.

42 IBM i: OmniFind Text Search Server per DB2 per i

Page 49: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Lo schema è QSYS2.

nome-colonnaSpecifica un nome qualificato o non qualificato di una colonna che ha un indice di ricerca testo in cuideve essere eseguita la ricerca. La colonna deve esistere nella tabella o nella vista identificata nellaclausola FROM dell'istruzione. La colonna della tabella, o la colonna della tabella di base sottostantedella vista, deve avere un indice di ricerca testo associato (SQLSTATE 38H12). L'espressionesottostante della colonna di una vista deve essere un semplice riferimento di colonna alla colonna diuna tabella sottostante, direttamente o tramite un'altra vista nidificata.

argomento-ricercaSpecifica un'espressione che restituisce un valore stringa contenente i termini utilizzati nella ricerca.L'espressione non deve essere tutti spazi oppure una stringa vuota (SQLSTATE 38H14). La lunghezzaeffettiva della stringa non deve superare i 32704 byte. Questa lunghezza potrebbe essere limitataulteriormente da quanto supportato dal server di ricerca testo (SQLSTATE 38H10). Il valore vieneconvertito in Unicode prima di essere utilizzato per eseguire ricerche nell'indice di ricerca testo. Sel'argomento-ricerca è null, il risultato è il valore null.

costante-stringaIdentifica una costante stringa che specifica le opzioni di argomento di ricerca effettive per lafunzione.

Le opzioni che possono essere specificate come parte delle opzioni-argomento-ricerca sono le seguenti:

QUERYLANGUAGE=valoreSpecifica la lingua della query. Il valore può essere uno qualsiasi dei codici lingua supportati.Se l'opzione QUERYLANGUAGE non viene specificata, il valore predefinito è il valore dilingua dell'indice di ricerca testo utilizzato quando è stata richiamata questa funzione. Se ilvalore di lingua dell'indice di ricerca testo è AUTO, il valore predefinito perQUERYLANGUAGE è en_US.

RESULTLIMIT=valoreSpecifica il numero massimo di risultati che deve essere restituito dal motore di ricercasottostante. Il valore può essere un valore intero compreso tra 1 e 2 147 483 647. Se non vienespecificata l'opzione RESULTLIMIT, non è effettivo alcun limite dei risultati per la query.

Questa funzione scalare potrebbe non essere richiamata per ciascuna riga della tabella dirisultati, a seconda del piano scelto dal programma di ottimizzazione. Questa funzione puòessere richiamata una volta per l'intera query al motore di ricerca sottostante. Viene restituitauna serie di risultati di tutte le chiavi primarie corrispondenti. Questa serie di risultati vienequindi unita alla tabella che contiene la colonna per identificare le righe di risultato. In questocaso, il valore RESULTLIMIT funziona come FETCH FIRST ?? ROWS dal motore di ricercatesto sottostante e può essere utilizzato come un'ottimizzazione. Se il motore di ricerca vienerichiamato per ciascuna riga del risultato perché quello è il piano migliore, l'opzioneRESULTLIMIT viene ignorata.

SYNONYM = OFF or SYNONYM = ONSpecifica se utilizzare un dizionario di sinonimi associato all'indice di ricerca testo. È possibileaggiungere un dizionario di sinonimi a una raccolta utilizzando lo strumento dei sinonimi.

OFF OFF è il valore predefinito.

ON Utilizzare il dizionario di sinonimi associato all'indice di ricerca testo.

Il risultato della funzione è un numero a virgola mobile con doppia precisione. Se il secondo argomentopuò essere null, il risultato può essere null. Se il secondo argomento è null, il risultato è il valore null.

Il risultato è maggiore di 0 ma inferiore a 1 se la colonna contiene una corrispondenza per i criteri diricerca specificati dall'argomento di ricerca. Maggiore è la frequenza con la quale viene trovata unacorrispondenza e maggiore è il valore del risultato. Se la colonna non contiene una corrispondenza, ilrisultato è 0. Il punteggio è 0 anche se la colonna è null.

OmniFind Text Search Server 43

Page 50: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

SCORE è una funzione non deterministica.

Esempio

La seguente istruzione genera un elenco di impiegati ordinati in base alla misura in cui i loro curriculumcorrispondono a programmer AND (java OR cobol). Viene inoltre restituito un valore di pertinenzanormalizzato tra 0 (zero) e 100.SELECT EMPNO, INTEGER(SCORE(RESUME, ’programmer AND(java OR cobol)’) * 100) AS RELEVANCEFROM EMP_RESUMEWHERE RESUME_FORMAT = ’ascii’ORDER BY RELEVANCE DESC

Attività correlate:“Ricerca su un indice di ricerca testo” a pagina 14È possibile eseguire una ricerca su un indice di ricerca testo utilizzando un'istruzione SQL con unafunzione CONTAINS o SCORE. I criteri di argomento di ricerca sono specificati nella funzione.Riferimenti correlati:“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“Sintassi degli argomenti di ricerca”È possibile specificare un argomento di ricerca come una condizione di una ricerca per i termini neidocumenti di testo. È formato da parametri di ricerca e uno o più termini di ricerca. Le funzioni diricerca testo scalari SQL che utilizzano gli argomenti di ricerca sono CONTAINS e SCORE.

Sintassi degli argomenti di ricercaÈ possibile specificare un argomento di ricerca come una condizione di una ricerca per i termini neidocumenti di testo. È formato da parametri di ricerca e uno o più termini di ricerca. Le funzioni diricerca testo scalari SQL che utilizzano gli argomenti di ricerca sono CONTAINS e SCORE.

Per qualsiasi elaborazione specifica per una lingua durante una ricerca, è possibile specificare un valoreper il parametro QUERYLANGUAGE come un'opzione di argomento di ricerca. Il valore può essere unoqualsiasi dei codici lingua supportati.

Se il parametro QUERYLANGUAGE non viene specificato, il valore predefinito è il valore di linguadell'indice di ricerca testo utilizzato quando viene richiamata questa funzione.

Se il valore di lingua dell'indice di ricerca testo è AUTO, il valore predefinito per QUERYLANGUAGE èen_US.

Limitazioni

Non è possibile utilizzare le funzioni CONTAINS e SCORE in una definizione di indice o di vincolo SQL.È possibile utilizzarle nelle istruzioni di query SQL e visualizzare le definizioni con le seguentilimitazioni:v Se una vista, un'espressione tabella nidificata o un'espressione tabella comune fornisce una colonna di

ricerca testo per una funzione scalare CONTAINS o SCORE, e se la vista, l'espressione tabella nidificatao l'espressione tabella comune applicabile ha una clausola DISTINCT sull'istruzione SELECT più

44 IBM i: OmniFind Text Search Server per DB2 per i

Page 51: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

esterna, l'elenco SELECT deve contenere tutti i campi chiave corrispondenti dell'indice di ricerca testo.Altrimenti, viene restituito il messaggio SQL 38H12.

v Se una vista, un'espressione tabella nidificata o un'espressione tabella comune fornisce una colonna diricerca testo per una funzione scalare CONTAINS o SCORE, la vista, l'espressione tabella nidificata ol'espressione tabella comune applicabile non può avere un'istruzione UNION, EXCEPT, o INTERSECTa livello dell'istruzione SELECT più esterna. Altrimenti, viene restituito il messaggio SQL 38H12.

v Se un'espressione tabella comune fornisce una colonna di ricerca testo per una funzione scalareCONTAINS o SCORE, all'espressione tabella comune può essere fatto nuovamente riferimentonell'intera query solo quando il riferimento non fornisce una colonna di ricerca testo per una funzionescalare CONTAINS o SCORE. Altrimenti, viene restituito il messaggio SQL 38H12.

v Una funzione non può essere creata come originata dalle funzioni scalari CONTAINS o SCORE.Altrimenti, viene restituito il messaggio SQL SQL0457.

v La query può essere eseguita tramite la SQE (SQL Query Engine).

Ricerca semplice

Per eseguire una ricerca di parola chiave semplice, immettere una o più parole chiave nella query. Ilmotore di ricerca restituisce i documenti che contengono tutte le parole chiave specificate o delle lorovariazioni.

Ad esempio, se si immette king, il motore di ricerca restituisce tutti i documenti che contengono la parolaking o la parola kings. Se si immette la query king lear, il motore di ricerca restituisce i documenti checontengono i termini king e lear.

Per visualizzare dei risultati più precisi, utilizzare delle parole chiave più specifiche. Ad esempio,utilizzare caffè tostato francese piuttosto che caffè, oppure utilizzare tour di trekking Kauaipiuttosto che vacanze hawaiane.

Se una ricerca di parola chiave semplice restituisce troppi documenti che non sono quello che si stavacercando, è possibile utilizzare degli operatori per affinare la ricerca.

Esclusione di termini in una ricerca

Utilizzare il segno meno (-) per escludere dei termini. Ad esempio, se si desidera trovare dei documenticon il termine lear ma senza edward, immettere la query lear -edward.

Il segno meno (-) si applica anche a un termine e alla sue varianti. Ad esempio, la query -edward escludei documenti che contengono la parola edward's.

Ricerca per frase

Se si desidera assicurare che i termini vengano visualizzati esattamente nella sequenza in cui sono statiimmessi, è possibile utilizzare delle virgolette. Ad esempio, se si desidera visualizzare i documenti checontengono esattamente il termine king lear, e non frasi correlate tipo kingly lear o king and queenlear, immettere "king lear". La ricerca non è sensibile al maiuscolo/minuscolo, ma le varianti di terminenon sono considerate corrispondenze.

Carattere jolly in una ricerca

Il carattere jolly *) aiuta a trovare i documenti quando non si conosce la grafia completa o se si desideratrovare le variazioni del termine. Ad esempio, la query czech* restituisce i documenti con i termini czech,czechoslovakia, czechoslovakian, czech republic e altri possibili risultati.

OmniFind Text Search Server 45

Page 52: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

È anche possibile utilizzare il carattere jolly in una ricerca per frase. Ad esempio, la query "John *Kennedy" restituisce i documenti con i termini John Fitzgerald Kennedy e John F Kennedy ma non JohnKennedy. La query Mi*l Gorbaciov restituisce Mikhail Gorbaciov.

Se si aggiunge un carattere jolly all'inizio di una query (ad esempio *zech), il motore di ricerca potrebbeimpiegare più tempo a restituire i risultati.

Ricerche per almeno uno dei termini

L'operatore logico OR specifica che almeno uno dei termini in una query deve essere visualizzato neldocumento restituito. Ad esempio, la query (othello OR otello) restituisce i documenti che contengonoil termine othello oppure otello.

È anche possibile utilizzare gli operatori logici AND, OR e NOT in combinazioni utilizzando le parentesi.Ad esempio, la query cougar OR (jaguar AND NOT car) restituisce i documenti con i termini cougar ojaguar ma non car.

È necessario immettere gli operatori logici AND, OR e NOT, tutti in lettere maiuscole. Utilizzare leparentesi per il raggruppamento.Concetti correlati:“Ricerca XML” a pagina 53È possibile indicizzare, ed eseguire ricerche su, documenti XML. La grammatica di ricerca XML utilizzaun sottoinsieme del linguaggio W3 XPath con estensioni per la ricerca testo. Le estensioni supportano lericerche per intervallo di valori numerici, Date e DateTime associati a un elemento o un attributo XML.Gli elementi strutturali possono essere utilizzati separatamente oppure combinati con del testo libero inquery.Riferimenti correlati:“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

Esempi di query sempliciDelle query semplici per le funzioni CONTAINS e SCORE cercano una singola parola o più parole in unindice di ricerca testo.

Il motore di ricerca ignora lo spazio vuoto tra i caratteri. La stringa di ricerca non deve essere vuota ocontenere tutti spazi (SQLSTATE 38H14).

La seguente tabella mostra alcuni esempi di query di ricerca semplici.

Tabella 3. Esempi di query semplici

Tipi di parole della ricerca Esempi Risultati della query

Singola parola king Restituisce tutti i documenti checontengono la parola king o la parolakings. Questa query corrisponde adiverse variazioni linguistiche dellaparola radice indicata e non è sensibile almaiuscolo/minuscolo.

46 IBM i: OmniFind Text Search Server per DB2 per i

Page 53: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 3. Esempi di query semplici (Continua)

Tipi di parole della ricerca Esempi Risultati della query

Più parole king lear Restituisce tutti i documenti checontengono king e lear. L'operatorepredefinito è l'operatore logico AND.

Gli operatori AND e + sono impliciti in tutte le query. Ad esempio, la query King Lear restituisce lostesso risultato di King AND Lear o di King + Lear.

È necessario immettere gli operatori logici NOT, AND e OR, tutti in maiuscole.Riferimenti correlati:“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

Operatori di ricerca avanzataÈ possibile utilizzare gli operatori di ricerca avanzata per affinare i risultati della ricerca per la funzioneCONTAINS e la funzione SCORE.

Nella seguente tabella, la prima colonna descrive l'operatore che è possibile utilizzare in una query diricerca. È necessario immettere gli operatori logici NOT, AND e OR, tutti in lettere maiuscole. La secondacolonna mostra una query di esempio che è possibile immettere. La terza colonna descrive i tipi dirisultati che potrebbero essere visualizzati dalla query di esempio.

Tabella 4. Operatori di ricerca avanzata ed esempi di query complesse

Operatori Esempi Risultati della query

AND "King Lear" AND "Othello"

"King Lear" "Othello"

La query restituisce i documenti checontengono entrambi i termini KingLear e Othello. L'operatore AND èl'operatore di congiunzione predefinito.Se non c'è alcun operatore logico tra idue termini, viene utilizzato l'operatoreAND. Ad esempio, la query King Lear èuguale alla query King AND Lear.

OR "King Lear" OR Lear Restituisce i documenti che contengonoKing Lear o solo Lear. L'operatore ORcollega i due termini e trova undocumento corrispondente se uno deitermini esiste in un documento.

NOT "King Lear"NOT "Norman Lear"

Restituisce i documenti che contengonoKing Lear ma non Norman Lear.

" "

(Corrispondenza esatta)

Prima query:

"King Lear"

Seconda query:

"king"

La prima query restituisce la frase esattaKing Lear.

La seconda query restituisce solo laparola king e nessun'altra forma, comead esempio kings o kingly.

OmniFind Text Search Server 47

Page 54: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 4. Operatori di ricerca avanzata ed esempi di query complesse (Continua)

Operatori Esempi Risultati della query

*

(Carattere jolly)

test*te*t

Restituisce i documenti che possonocorrispondere alle possibilicombinazioni, come ad esempio test,tests, tester o test e text.

^

(Fattore di incremento punteggio)qualche parola o frase^numero

Prima query:

"King Lear"^4 "Richard III"

Seconda query:

title: (software download)^5pdf viewer -shipping

La prima query forza la visualizzazionedei documenti con la frase King Learpiù in alto nell'elenco di risultati dellaricerca.

La seconda query forza lavisualizzazione di un documentointitolato software download più in altonell'elenco di risultati.

Anche se un fattore di incremento deveessere positivo, il fattore di incrementopuò essere minore di 1. Ad esempio, 0.2.Il numero del fattore di incremento nonha un limite.

+

(Inclusioni)

+Lear King Restituisce tutti i documenti checontengono Lear e King, che equivalealla query Lear AND King.

-

(Esclusioni)

"King Lear" -"Lear Jet" Restituisce i documenti che contengonoKing Lear ma non Lear Jet.

( ) (King OR Lear) AND plays Restituisce i documenti che contengonoKing o Lear e plays. Le parentesiassicurano che plays sia trovato e chesia presente il termine King o Lear.

\

(Carattere di escape)

\(1\+1\)\:2 Restituisce i documenti che contengono(1+1):2. Utilizzare \ come carattere diescape in modo da poter utilizzare icaratteri speciali che normalmente fannoparte della sintassi della query. Se uncarattere speciale è preceduto dalcarattere escape, il carattere specialeviene analizzato come parte della query.I caratteri speciali sono: +, -, &&, ||, !, (,), {, }, [, ], ^, ", ~, *, ?, : e \. Se èpreceduto dal carattere di escape, ilcarattere speciale viene analizzato comeparte della query.

%

Termini facoltativi

log %file Restituisce i documenti che includono iltermine log e facoltativamente iltermine file.

48 IBM i: OmniFind Text Search Server per DB2 per i

Page 55: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 4. Operatori di ricerca avanzata ed esempi di query complesse (Continua)

Operatori Esempi Risultati della query

~

Ricerca con corrispondenza parziale

analytics~analytics~0.8

La prima query restituisce i documentiche includono i termini analytics,analyze, analysis, e così via.

Una query di ricerca con corrispondenzaparziale di sequenze di caratteri che nonsono solo uguali al termine della queryma anche simili. Utilizzare il simbolotilde (~) alla fine di un termine pereseguire una ricerca con corrispondenzaparziale.

È possibile aggiungere un parametrofacoltativo per specificare la somiglianzarichiesta. Specificare un valore maggioredi 0 e minore di 1. Il valore deve esserepreceduto da uno 0 e un puntodecimale, ad esempio 0.8. Un valore piùvicino a 1 corrisponde ai termini conuna maggiore somiglianza. Se ilparametro non viene specificato, ilvalore predefinito è 0.5.

Limitazione: i caratteri speciali non sonosupportati nelle query di ricerca perprossimità.

~

Ricerche per prossimità

"IBM WebSphere"~7 Restituisce i documenti che contengono"IBM" e "WebSphere" entro sette parolecomprese tra un termine e l'altro.

Una ricerca per prossimità trova idocumenti che contengono i terminiinclusi entro un numero specificato diparole comprese tra un termine e l'altro.Utilizzare il simbolo tilde (~) pereseguire una ricerca per prossimità.

La ricerca per prossimità è supportataper i singoli termini, non per le frasi.Notare, inoltre, che una parola che segueun'interruzione di frase non èconsiderata adiacente alle parolecontenute nella frase precedente.

Limitazione: i caratteri speciali non sonosupportati nelle query di ricerca perprossimità.

Riferimenti correlati:“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

OmniFind Text Search Server 49

Page 56: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Ricerca di caratteri specialiOmniFind supporta l'indicizzazione e la ricerca di caratteri speciali.

È possibile cercare caratteri speciali, come altri termini di query. Per trovare un carattere speciale in undocumento, includere il carattere speciale nell'espressione della query. In alcuni casi, è necessario l'escapedei caratteri speciali.

Escape dei caratteri speciali

I caratteri speciali possono adempiere a funzioni differenti nella sintassi della query. Ad esempio, i puntiinterrogativi (?) possono essere utilizzati come caratteri jolly. Per cercare un carattere speciale che ha unafunzione speciale nella sintassi della query è necessario effettuare l'escape del carattere specialeaggiungendo una barra retroversa prima del carattere, ad esempio:v Per cercare la stringa “dove?”, effettuare l'escape del punto interrogativo nel modo seguente: “dove\?”v Per cercare la stringa “c:\temp,” effettuare l'escape dei due punti e della barra retroversa nel modo

seguente: “c\:\\temp”

Senza l'escape questi caratteri speciali possono causare errori di sintassi.

Tabella 5. Caratteri speciali che necessitano di escape per poter essere cercati

Carattere speciale Note sul comportamento in assenza di escape

E commerciale (&)

Asterisco (*) Utilizzato come carattere jolly.

Chiocciola (@) Viene generato un errore di sintassi quando il caratterechiocciola è il primo carattere di una query. Nelleespressioni xmlxp, il carattere chiocciola viene utilizzatoper far riferimento ad un attributo.

Parentesi quadre [ ] Utilizzate nelle espressioni xmlxp per effettuare ricerchenel contenuto di elementi e attributi

Parentesi graffe { } Genera un errore di sintassi.

Barra retroversa (\)

Accento circonflesso (^) Utilizzato per soppesare (incrementare) i termini.

Due punti (:) Utilizzati per effettuare ricerche nel contenuto deicampi.

Segno di uguale (=) Genera un errore di sintassi.

Punto esclamativo (!) Viene restituito un errore di sintassi quando un puntoesclamativo è il primo carattere di una query.

Barra (/) Nelle espressioni xmlxp, una barra viene utilizzata comeseparatore nel percorso dell'elemento.

Simbolo maggiore di (>) simbolo minore di (<) Utilizzati nelle espressioni xmlxp per confrontare ilvalore di un attributo. Altrimenti questi caratterigenerano errori di sintassi.

Segno meno (-) Quando un segno meno è il primo carattere di untermine, vengono restituiti solo i documenti che noncontengono il termine.

Parentesi ( ) Utilizzato per il raggruppamento.

Segno percentuale (%) Specifica che un termine di ricerca è facoltativo.

Segno più (+)

Punto interrogativo (?) Gestito come carattere jolly.

Punto e virgola (;)

50 IBM i: OmniFind Text Search Server per DB2 per i

Page 57: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 5. Caratteri speciali che necessitano di escape per poter essere cercati (Continua)

Carattere speciale Note sul comportamento in assenza di escape

Apice (‘) Gli apici vengono utilizzati per contenere le espressionixmlxp.

Tilde (~) Gestito come operatore di ricerca per prossimità e dicorrispondenza parziale

Barra verticale (|)

L'escape dei caratteri speciali che non adempiono ad una speciale funzione nella sintassi della query èfacoltativo. La seguente tabella mostra alcuni esempi di caratteri speciali che non richiedono l'escape.

Tabella 6. Esempi di caratteri speciali che non richiedono l'escape

Carattere speciale Note sul comportamento in assenza di escape

Virgola (,)

Simbolo del dollaro ($)

Punto (.) Nelle espressioni xmlxp, un punto viene utilizzato perricercare il contenuto degli elementi.

Simbolo della sterlina (#)

Sottolineatura (_)

Caratteri speciali adiacenti ai termini della query

Quando un carattere speciale è adiacente ad una parola in una query, vengono restituiti i documenti checontengono il carattere speciale e la parola nello stesso ordine. Ad esempio, la ricerca di “30$” trova idocumenti che contengono “30$”, ma non quelli che contengono “$30”. Tuttavia, la ricerca di “30 $” (conuno spazio) trova tutti i documenti che contengono “30” e “$” in qualsiasi punto nei documenti, inclusi“30$” e “$30”.

Quando un carattere speciale è adiacente ad una parola non significativa (stop word) in una query, laparola non significativa non viene rimossa dalla query. Ad esempio, la ricerca di “at&t” non rimuove laparola non significativa “at”. Tuttavia, la ricerca di “at & t” con gli spazi rimuove la parola nonsignificativa “at”.

Quando un carattere speciale separa due parole, la sequenza dei token viene ricercata come sequenza. Adesempio, la ricerca di “jack_jones” trova i documenti che contengono “jack_jones” ma non quelli checontengono “jack_and_jones”.

Le parole adiacenti ai caratteri speciali vengono lemmatizzate. Ad esempio, la ricerca di “cats&dogs” ininglese trova i documenti che contengono “cat&dog”.

È possibile utilizzare i caratteri speciali nelle espressioni di ricerca con carattere jolly. Ad esempio, laricerca di “ja*_” trova i documenti che contengono “jack_jones”. Tuttavia, non è possibile utilizzare icaratteri jolly per trovare i caratteri speciali. Ad esempio, la ricerca di “ca*s” trova i documenti checontengono “cats”, “categories” o “cas”, ma non i documenti che contengono “ca_s”.

Indicizzazione dei caratteri speciali

Durante la tokenizzazione e l'elaborazione della lingua, il server OmniFind identifica ed indicizza icaratteri speciali come punteggiatura. I caratteri speciali sono delimitatori di token.

OmniFind Text Search Server 51

Page 58: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Ad esempio, viene eseguita la tokenizzazione di “jack_jones” come tre token separati: “jack”, “_” e“jones”. Le email, gli URL e i percorsi file vengono suddivisi in token, ad esempio:v La tokenizzazione di [email protected] è jack _ jones @ ibm . comv La tokenizzazione di http://www.ibm.com è http :// www . ibm . com

I caratteri speciali non occupano una posizione token nel file. Ad esempio, "jack_jones" viene indicizzatocon il carattere di sottolineatura nella stessa posizione token di "jack". I caratteri speciali, inoltre, nonoccupano una posizione token quando sono inclusi degli spazi. Ad esempio, “jack_jones” vieneindicizzato allo stesso modo di “jack _ jones”.

La posizione token viene utilizzata per la ricerca della frase esatta e per la ricerca per prossimità. Adesempio, se un documento contiene l'espressione jack_jones, la ricerca della frase esatta ““jack jones””trova questo documento.

Quando una sequenza di caratteri speciali viene indicizzata separatamente, i caratteri non vengono cercatiin un ordine particolare. Ad esempio, la ricerca di “#$” trova anche i documenti che contengono “$#”.

Caratteri speciali nelle lingue CJK

Per trovare una sequenza di caratteri che include caratteri speciali, l'espressione della query devecontenere i caratteri speciali. Se si omettono i caratteri speciali dall'espressione della query, la sequenza dicaratteri potrebbe non essere individuata. Nelle lingue non CJK (cinese, giapponese e coreano), lasequenza di caratteri viene sempre trovata, anche se l'espressione della query omette i caratteri speciali.Ad esempio, se un documento indicizzato contiene john_smith, è possibile cercare john_smith o "johnsmith" (corrispondenza esatta, senza il carattere di sottolineatura) ed entrambe le query restituiscono ildocumento che contiene john_smith.

Limitazione: non è possibile cercare i seguenti caratteri speciali nei documenti CJK: ? * \

Esempio utilizzando le funzioni CONTAINS e SCOREÈ possibile utilizzare le funzioni CONTAINS e SCORE nella stessa query. La query esegue la ricerca in unindice di ricerca testo; i dati che restituisce indicano se, e con quale frequenza, il documento di testocorrisponde ai criteri di argomento di ricerca.

L'esempio nella seguente tabella utilizza i dati dalla tabella di base BOOKS con le colonne ISBN(VARCHAR(20)), ABSTRACT (VARCHAR(10000)) e PRICE (INTEGER).

Tabella 7. La tabella di base BOOKS

ISBN ABSTRACT PRICE

i1 "a b c" 7

i2 "a b d" 10

i3 "a e a" 8

Si esegue la seguente query:SELECT ISBN, SCORE(ABSTRACT,’"b"’)FROM BOOKSWHERE CONTAINS (ABSTRACT,’"b"’) = 1

Questa query restituisce le seguenti due righe:i1, 0.3i3, 0.4

I valori di punteggio potrebbero essere diversi, a seconda del contenuto della colonna di testo.Riferimenti correlati:

52 IBM i: OmniFind Text Search Server per DB2 per i

Page 59: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

Ricerca XMLÈ possibile indicizzare, ed eseguire ricerche su, documenti XML. La grammatica di ricerca XML utilizzaun sottoinsieme del linguaggio W3 XPath con estensioni per la ricerca testo. Le estensioni supportano lericerche per intervallo di valori numerici, Date e DateTime associati a un elemento o un attributo XML.Gli elementi strutturali possono essere utilizzati separatamente oppure combinati con del testo libero inquery.

I documenti devono essere indicizzati per includere la markup XML prima che sia possibile eseguirericerche nell'indice utilizzando la sintassi di query xmlxp. L'indicizzazione dei documenti viene eseguitautilizzando l'opzione “FORMAT XML” al momento della creazione dell'indice.

Gli indici creati in una release precedente possono essere utilizzati per eseguire le ricerche. Tuttavia, idocumenti indicizzati in una release precedente non dispongono delle informazioni necessarie perutilizzare tutte le capacità di ricerca XML disponibili in una release più recente. I documenti aggiunti oaggiornati nell'indice di ricerca testo dopo l'aggiornamento alla nuova release includono delleinformazioni aggiuntive.

Un aggiornamento potrebbe causare la non inclusione dei documenti indicizzati in una release precedentein qualche risultato di una ricerca. La procedura memorizzata SYSPROC.SYSTS_REPRIMEINDEX puòessere utilizzata per ricompilare l'indice e risolvere questo problema.

Per utilizzare le funzioni incorporate OMNIFIND CONTAINS e SCORE per eseguire ricerche su datiXML, la stringa di query deve iniziare con il prefisso di query @xmlxp:. Il prefisso è seguito daun'espressione di query di ricerca XML valida. Il prefisso di termine 'opaco' @xmlxp indica che una ricercaviene eseguita utilizzando l'espressione di percorso di query.

Ad esempio: CONTAINS(nomecolonna, '@xmlxp:’’espressione_query’’ ').

Le virgolette singole ' ’ che racchiudono l'espressione_query devono essere raddoppiate perché sonocontenute all'interno di una stringa SQL e quindi, in effetti, una stringa all'interno di una stringa.

Il prefisso di termine opaco @xpath: utilizzato nelle release precedenti di OmniFind Text Search Serverper DB2 per i è supportato per ragioni di compatibilità con le versioni precedenti. Tuttavia, è statodichiarato obsoleto e ne è sconsigliato l'uso.

Il seguente elenco evidenzia le funzioni chiave della ricerca XML:

Ricerca strutturale XML

Includendo dei termini XML opachi speciali nelle query, è possibile ricercare nei documenti XML glielementi strutturali e il testo che rientrano nell'ambito di tali elementi. Gli elementi strutturali sono inomi di tag, i nomi di attributo e i valori di attributo. I nomi di tag e di elemento sono sensibili almaiuscolo/minuscolo.

Tokenizzazione di query XML

OmniFind Text Search Server 53

Page 60: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

La tokenizzazione è il processo di analizzare l'immissione in token. La tokenizzazione del testo libero neitermini di query XML viene eseguita nello stesso modo in cui viene eseguita la tokenizzazione del testonei termini di query non XML. Un'eccezione è rappresentata dal fatto che i termini opachi nidificati nonsono supportati. La ricerca di testo libero non è sensibile al maiuscolo/minuscolo.

Schema XML e DTD

Gli schemi XML associati al documento XML non vengono scaricati e i valori predefiniti non vengonoindicizzati.

Valori numerici

I predicati che mettono a confronto i valori di attributo o di elemento con i numeri sono supportati.

Valori elemento

I predicati che mettono a confronto i valori elemento con i numeri o le date sono supportati. L'elementoche contiene la data o il numero deve essere un elemento XML che contiene solo il numero o la data. Glispazi iniziali e finali vengono ignorati.

Valori stringa

L'utilizzo dell'operatore = per un argomento stringa in un predicato richiede una corrispondenzacompleta di tutte le parole chiave nella stringa con i token nella porzione di testo identificata. L'ordinedei token non è significativo quando viene eseguita la messa a confronto.

Valori DateTime

I predicati che mettono a confronto gli elementi o gli attributi Date o DateTime sono supportati.

Espressioni percorso:

Tabella 8. Espressioni percorso

Espressione @xmlxp Descrizione

TagName Seleziona una tag denominata TagName e tutti i relativielementi secondari.

@AttributeName Seleziona un attributo denominato @AttributeName.

/ Seleziona dal nodo root.

// Seleziona le tag e gli attributi corrispondenti che sonodiscendenti della posizione corrente e che corrispondonoall'espressione.

. Stesso: il nodo di elemento o tag corrente.

Tabella 9. Esempi di espressione percorso:

Espressione @xmlxp Risultato

/Document Restituisce tutti i documenti con una tag di livellosuperiore Document.

//Document Restituisce tutti i documenti con una tag Document aqualsiasi livello.

/Document/Child1 Restituisce tutti i documenti con una tag di livellosuperiore Document che ha una tag secondaria direttaChild1.

54 IBM i: OmniFind Text Search Server per DB2 per i

Page 61: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 9. Esempi di espressione percorso: (Continua)

Espressione @xmlxp Risultato

/Document//Child1 Restituisce tutti i documenti con una tag di livellosuperiore Document che ha una tag discendente Child1 aqualsiasi livello.

/Root/@attr1 Restituisce tutti i documenti con una tag di livellosuperiore Root con un attributo attr1.

/Root//@attr1 Restituisce tutti i documenti con una tag di livellosuperiore Root con un attributo attr1 su tale tag root oqualsiasi tag discendente.

//@attr1 Restituisce tutti i documenti che hanno un attributo@attr1 a qualsiasi livello.

Nota: l'espressione di ricerca XML deve avere un nome di attributo o di tag esistente nell'espressionepercorso relativa se si desidera che vengano restituiti dei risultati. / e // da soli non sono query di ricercavalide.

Le espressioni percorso sono consentite solo nella direzione in avanti (('/' e '//')) e solo su un singoloasse.

È consigliabile che un'espressione di percorso inizi con / o //. Questo indica che il contesto inizialedell'espressione è il nodo root del documento. Quando viene omessa la / o // iniziale, l'espressione vienefatta corrispondere a qualsiasi livello. In altre parole, 'Sentences' viene trattato come ’//Sentences’. Ilcomportamento viene definito in questo modo per essere compatibile con i release precedenti e non seguelo standard W3 o SQL/XML.

Supporto di caratteri jolly delle espressioni percorso

Nell'espressione percorso, il carattere jolly speciale, *, può essere utilizzato per indicare esattamente unatag, con qualsiasi nome.

I caratteri jolly delle espressioni percorso finali vengono ignorati.

I seguenti utilizzi dei caratteri jolly delle espressioni percorso non sono supportati e causano un errore:v Un'espressione che fa riferimento solo a caratteri jolly e a nessun elemento o attributo specifico.v Un attributo carattere jolly a qualsiasi livello: /Tag/@*.v Un carattere jolly che precede immediatamente un'espressione predicato: /Root/*[//anytag].v Un carattere jolly utilizzato in un confronto di predicati: /Root[* > 5].v Un carattere jolly come un prefisso di spazio nome XML: //*:tagname.v Un carattere jolly che ha come prefisso un prefisso di spazio nome XML: //ns:*.v Un carattere jolly utilizzato come parte di un nome di tag: /start*.

Tabella 10. Esempi di caratteri jolly di espressioni percorso:

Espressione @xmlxp Risultato

/Root/*/T1 Tutti i documenti con una tag di livello superiore Rootche ha una tag discendente T1 con un livello intermedio.

/Root/*//T1 Tutti i documenti con una tag di livello superiore Rootche ha una tag discendente T1 con uno o più livelliintermedi.

OmniFind Text Search Server 55

Page 62: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Predicati

I predicati vengono utilizzati per specificare un valore o una condizione che un nodo di attributo oelemento deve soddisfare. I predicati sono sempre racchiusi tra parentesi quadre: [].

Tabella 11. Esempi di predicati:

Espressione @xmlxp Risultato

/Book[Sentences] La tag di livello superiore è Book e deve avere unelemento secondario diretto Sentences.

/Book[.//Sentences e .//Author] La tag di livello superiore è Book e deve avere entrambi idiscendenti Sentences e Author. Ciascun discendente puòessere a qualsiasi livello al di sotto di Book.

Poiché le espressioni percorso sono sempre nella direzione in avanti (('/' e '//'), e limitate a un singoloaccesso, le espressioni percorso nei predicati devono essere relative al nodo corrente. /Book[/Root] e/Book[//Root] non sono validi perché in entrambi i casi l'espressione di percorso del predicato inizia conla tag di livello superiore ‘Root' invece del nodo corrente.

Confronti numerici

OMNIFIND supporta gli operatori =, <=, >=, >, < e != per le messe a confronto di elementi ed attributi convalori numerici interi e a virgola mobile.

Per gli elementi, se sono semplici, vengono indicizzati solo i valori numerici. Non devono contenerecaratteri aggiuntivi (oltre agli spazi) e non devono avere elementi discendenti. Gli elementi complessisono indicizzati come solo testo.

Tabella 12. Esempi di confronti numerici:

Espressione @xmlxp Risultato

/Book[@id_num = 12345] La tag di livello superiore è Book e deve avere unattributo id_num con il valore 12345.

/Book[Cost <= 100.50] La tag di livello superiore è Book. Book ha un elementosecondario diretto Cost con un valore numerico inferioreo uguale a 100.50.

Confronti di Date e DateTime

OMNIFIND supporta gli operatori =, <=, >=, >, < e != per le messe a confronto di elementi e attributi aivalori Date e DateTime.

Per gli elementi semplici sono indicizzati solo i valori DateTime. Questi elementi non devono contenerecaratteri aggiuntivi (oltre agli spazi) e non devono avere elementi discendenti. Gli elementi complessisono indicizzati come solo testo.

Durante l'indicizzazione, vengono esaminati i valori di attributo e il testo contenuti nelle tag XMLsemplici. Se viene determinato che il testo corrisponde a un formato ISO Date o DateTime, ne vieneeseguita l'indicizzazione come Date o DateTime su cui è possibile eseguire ricerche in un predicato.

Durante una ricerca, il valore Date o DateTime deve essere racchiuso in una chiamata di funzionexs:date() o xs:dateTime() per essere riconosciuto come tipo di dati corretto.

56 IBM i: OmniFind Text Search Server per DB2 per i

Page 63: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Un tipo di dati XML DateTime in un documento XML può specificare un valore di fuso orario. Tuttavia,quando un DateTime viene indicizzato, il server di ricerca testo tronca i valori di fuso orario durantel'indicizzazione. Pertanto, i fusi orari non vengono presi in considerazione durante le ricerche XML cheinteressano i tipi di dati Date o DateTime.

Inoltre, un DateTime con un'ora di 24 è consentita solo se i minuti e i secondi sono zero. Verrà valutatocome un valore compreso tra l'ultimo istante del giorno in oggetto e il primo istante del giornosuccessivo.

Quando un valore Date o DateTime viene specificato in un predicato di ricerca XML, si verifica un erroredi sintassi se nel valore viene specificato un fuso orario.

Il tipo di dati DateTime supporta fino a 12 cifre di secondi frazionari.

Tabella 13. Esempi di confronti di Date e DateTime:

Espressione @xmlxp Risultato

/Book[@publishDate > xs:date(“2000-01-01”)] La tag di livello superiore è Book. Book ha un attributopublishDate maggiore della data 2000-01-01.

/Book[purchaseTime > xs:dateTime(“2009-05-20T13:00:00”)]

La tag di livello superiore è Book. Book ha un elementosecondario diretto purchaseTime che è un'espressioneDateTime superiore a 2009-05-20T13:00:00.000000.

contains ed excludes nella markup XML

Le funzioni contains ed excludes vengono utilizzate per eseguire delle ricerche di testo completo all'internodella markup XML. contains restituisce true se la query è contenuta all'interno del nodo di destinazione:excludes restituisce true se la query NON è contenuta nel nodo di destinazione.

Ad esempio, trovare tutti i documenti con una tag di livello superiore denominata email e undiscendente diretto denominato body che contiene variazioni della frase “Department budget”.@xnkxo:’’/email[body contains (“department budget”)]’’

Il testo libero trasmesso alla funzione contains o excludes viene gestito come qualsiasi altra ricerca di testolibero. La ricerca non è sensibile al maiuscolo/minuscolo e le variazioni linguistiche vengono prese inconsiderazione. La query precedente corrisponde a “departments budgets” e anche a “budget for thedepartment”.

La ricerca può essere limitata a una corrispondenza esatta utilizzando le classiche virgolette, ad esempio@xmlxp:’’/email[body contains(“””department budget”””)] ’’. Le virgolette che indicano unacorrispondenza esatta devono essere raddoppiate in modo che non vengano interpretate come la finedella stringa di testo libero contains.

Tabella 14. Esempi di contains e di excludes:

Espressione @xmlxp Risultato

/Book[abstract contains(“cat AND dog”)] Tag di livello superiore Book che ha una tag secondariaabstract che contiene le variazioni linguistiche deitermini cat e dog.

/Book[abstract contains(“cat AND dog”)]/Book/@title[. contains(“cat OR dog”)]

La tag di livello superiore Book ha un attributo title checontiene variazioni linguistiche di cat o dog.

/Book/Title[. contains(“””All good dogs go toheaven”””)]

Tag di livello superiore Book con un elemento secondariodiretto Title che contiene all good dogs go to heavenin questo ordine e senza che vengano prese inconsiderazione le variazioni linguistiche.

OmniFind Text Search Server 57

Page 64: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 14. Esempi di contains e di excludes: (Continua)

Espressione @xmlxp Risultato

/Book[abstract excludes(“cat AND dog”)] Tag di livello superiore Book che ha una tag secondariaabstract che non contiene le variazioni linguistiche deitermini cat e dog.

Operatore di corrispondenza di stringa completa

L'operatore = con un argomento stringa in un predicato richiede una corrispondenza completa di tutti itoken nella stringa con tutti i token nella porzione di testo identificata. Gli equivalenti linguistici nonsono presi in considerazione. L'ordine dei termini cercati non è significativo. Non è richiesto chel'elemento o l'attributo contengano solo il testo cercato.

Tabella 15. Esempi di operatore di corrispondenza di stringa completa:

Espressione @xmlxp Risultato

/Book[@author = “Nicholas Lawrence”] Tag di livello superiore Book che ha un attributo author.author deve contenere i termini Nicholas Lawrence. Levariazioni linguistiche su questi termini non sonoconsiderate corrispondenze.

/Book[author = “””Nicholas Lawrence”””] Tag di livello superiore Book che ha un discendentediretto author. author deve contenere i termini NicholasLawrence in questo ordine. Le variazioni linguistiche suquesti termini non sono considerate corrispondenze.

Operatori logici

Gli operatori logici and e or possono essere utilizzati nei predicati.

Tabella 16. Esempi di operatori logici:

Espressione @xmlxp Risultato

/Book[@author = “””Nicholas Lawrence”””]/Price[. <1000 and @unit = “dollars”]

Tag di livello superiore Book che ha un attributo author.author deve contenere i termini Nicholas Lawrence inquesto ordine. Le variazioni linguistiche su questitermini non sono considerate corrispondenze.

Book deve avere un elemento secondario diretto Pricecon un valore < 1000. Il nodo Price deve avere unattributo @unit che ha il valore dollars.

Precedenza dell'operatore

Nei predicati di ricerca XML, gli operatori di contenimento e gli operatori di confronto hanno laprecedenza sugli operatori logici e tutti gli operatori logici hanno la stessa precedenza.v Gli operatori di contenimento sono contains e excludes.v Gli operatori di confronto sono =, !=, <, >, <= e >=.v Gli operatori logici sono and e or.

È possibile utilizzare le parentesi per assicurare la precedenza desiderata.Riferimenti correlati:“Sintassi degli argomenti di ricerca” a pagina 44È possibile specificare un argomento di ricerca come una condizione di una ricerca per i termini neidocumenti di testo. È formato da parametri di ricerca e uno o più termini di ricerca. Le funzioni di

58 IBM i: OmniFind Text Search Server per DB2 per i

Page 65: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

ricerca testo scalari SQL che utilizzano gli argomenti di ricerca sono CONTAINS e SCORE.“SYSPROC.SYSTS_REPRIMEINDEX” a pagina 79È possibile ricreare l'indice e avviare un aggiornamento iniziale utilizzando la procedura memorizzataSYSPROC.SYSTS_REPRIMEINDEX. Utilizzare questa procedura memorizzata quando si desideraripristinare i dati dalla tabella di base.“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.

Supporto degli spazi nome di ricerca XMLÈ possibile utilizzare uno spazio nome per definire l'ambito di elementi e attributi in un documento. Glispazi nome sono utili nel limitare la ricerca della query agli elementi significativi all'interno deldocumento.

Panoramica

In XML, i nomi di elemento e attributo sono scelti dallo sviluppatore. Questi nomi possono creare deiconflitti quando vengono combinati dei documenti XML da applicazioni differenti.

È pertanto utile limitare la ricerca della query agli elementi significativi all'interno del documento,soprattutto quando potrebbero essere indicizzati più tipi di documento differenti. La limitazione dellaricerca può essere ottenuta utilizzando gli spazi nome.

Gli spazi nome forniscono l'ambito degli elementi e degli attributi del documento per assicurare unacorretta interpretazione dei valori. Gli spazi nome vengono descritti con il nome esteso (URI) e,facoltativamente, un nome breve denominato Qname (nome qualificato).<?xml version=’1.0’?>

<doc xmlns:x="http://example.com/ns/abc"><x:p/>

</doc>

http://example.com/ns/abc è il nome di spazio nome lungo e x è il prefisso Qname. Un prefisso Qnameè utile come nome abbreviato per lo spazio nome di ciascun riferimento all'elemento.

L'elemento p è qualificato dallo spazio nome http://example.com/ns/abc.

Nome spazio predefinito

Uno spazio nome predefinito può essere specificato per gli elementi XML. Lo spazio nome predefinito siapplica alla tag corrente e a qualsiasi tag discendente. Le eventuali tag non qualificate nello spazio nomeereditano lo spazio nome predefinito.<?xml version=’1.0’?>

<doc xmlns="http://example.com/ns/abc"><p/>

</doc>

In questo caso, entrambi gli elementi doc e p sono nello spazio nome http://example.com/ns/abc.

Spazi nome di attributo

Un attributo può avere uno spazio nome differente dal suo elemento associato.

OmniFind Text Search Server 59

Page 66: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Elemento e attributo, qualificato:<dog xmlns:an="http://example.org/animals" xmlns:sz=”http://example.org/sizes”><an:breed sz:size=”Medium”>Mutt</an:breed></dog>

Esiste una differenza nel modo in cui gli elementi e gli attributi ereditano lo spazio nome quando non èspecificato in modo esplicito. Gli elementi non qualificati assumono lo spazio nome predefinitodell'ambito in cui rientrano. Gli attributi non qualificati non hanno alcuno spazio nome.

Elemento e attributo, non qualificato:<dog xmlns:an="http://example.org/animals"><breed size=”Medium”>Mutt</an:breed></dog>

In questo esempio, l'elemento breed ha uno spazio nome di http://example.org/animals. Tuttavia,all'attributo size non è associato alcuno spazio nome.

Per ulteriori informazioni sugli spazi nome XML, consultare la W3C Recommendation for Namespaces in

XML, disponibile all'indirizzo World Wide Web Consortium(W3C) (http://www.w3.org) .

Prefissi Qname riservati

I seguenti prefissi Qname sono riservati e non devono essere utilizzati per qualificare attributi o elementidefiniti dall'utente: xml, xs, xsi, fn, local.

Utilizzo degli spazi nome nella ricercaI prefissi QName e gli spazi nome di elemento predefinito devono essere definiti nel prologo di query@xmlxp del termine di ricerca.

Un prologo di esempio che associa lo spazio nome ns1 all'URI "http://mycompany.com"declare namespace ns1 = "http://mycompany.com";

Un prologo di esempio che specifica che tutti gli elementi non qualificati sono qualificati dall'URI"http://mycompany.com":declare default element namespace "http://mycompany.com"

Se una query non dichiara alcun prefisso QName di spazio nome o uno spazio nome di elementopredefinito, gli spazi nome non sono presi in considerazione nella query. Un nome di elemento o diattributo viene considerato una corrispondenza se esiste in qualche spazio nome.

Se viene dichiarato un prefisso QName o uno spazio nome predefinito, i nomi di elemento o attributosono una corrispondenza solo se esistono nello spazio nome specificato.

La sintassideclare default element namespace "”;

potrebbe essere utilizzata per indicare che le tag non qualificate non sono presenti in alcuno spazio nome.

NON è richiesto che i prefissi QName utilizzati nella stringa di ricerca XML corrispondano al prefissoQName utilizzato nel documento XML. Le corrispondenze sono basate esclusivamente sull'URI di nomelungo.

60 IBM i: OmniFind Text Search Server per DB2 per i

Page 67: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Esempi:

Limitare la ricerca all'attributo attr dell'elemento test, dove l'elemento test è associato allo spazio nome"http://posample.org" e attr non è in alcuno spazio nome. Utilizzare lo spazio nome predefinito persemplificare la sintassi.CONTAINS(myxmlcol, ’@xmlxp:’’declare default element namespace “http://myexample.org”;/test[@attr > xs:date(“2005-01-01”)]’’’)

Limitare la ricerca all'attributo attr dell'elemento test, dove l'elemento test ha uno spazio nome di"http://myexample.org". Utilizzare la sintassi di spazio nome esplicita utilizzando il prefisso QName abc.CONTAINS(myxmlcol, ’@xmlxp:’’declare namespace abc = “http://myexample.org”;/abc:test[@attr < xs:date(“2009-01-01”)]’’’)

Limitare la ricerca agli elementi secondari shipTo name e billTo name dell'elemento purchaseOrder, che èassociato esplicitamente a uno spazio nome (namespace) "http://myexample.org" utilizzando il prefissoQName ns1. È anche definito uno spazio nome predefinito ("http://mastsample.org"), che si applica ashipTo, name e billTo.CONTAINS(myxmlcol, ’@xmlxp:’’ declare default namespace "http://mastsample.org";declare namespace ns1 = "http://posample.org"; /ns1:purchaseOrder[shipTo/name = "Jane"and billTo/name = "Jason"]’’’)

Limitare la ricerca all'attributo name (definito esplicitamente nello spazio nome "http://posample.org")dell'elemento shipTo (nello spazio nome predefinito "http://mastsample.org"), che è un elementosecondario dell'elemento purchaseOrder (definito esplicitamente nello spazio nome "http://posample.org"). Lo spazio nome predefinito "http://mastsample.org" si applica agli elementi shipTo,billTo e name.CONTAINS(myxmlcol, ’@xmlxp:’’ declare default namespace "http://mastsample.org";declare namespace ns1 = "http://posample.org"; /ns1:purchaseOrder/shipTo[@ns1:name ="Jane" and billTo/name = "Jason"]’’’)

Esempio di ricerca XMLv Creare una tabella XML_DOCUMENTS nello schema XMLTEST per memorizzare i documenti XML:

CREATE TABLE XMLTEST.XML_DOCUMENTS (ID INT, XML_DATA XML, PRIMARY KEY (ID));

v Creare un indice di ricerca testo denominato XML_INDEX sulla colonna XML:call SYSPROC.SYSTS_CREATE(’XMLTEST’, ’XML_INDEX’, ’XMLTEST.XML_DOCUMENTS(XML_DATA)’, ’’);

v Inserire qualche documento XML:INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)VALUES(1,

’<BOOK publication_date="2009-01-01">’ ||’ <TITLE> OmniFind Text Search Server per DB2 </TITLE>’ ||’ <ID_NUMBER> 1 ></ID_NUMBER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 1 </NUMBER>’ ||’ <TITLE> Introduzione </TITLE>’ ||’ <ABSTRACT> Questo capitolo introduce il lettore alle funzionalità di OmniFind

per DB2 per IBM i </ABSTRACT>’ ||’ </CHAPTER>’||’ <CHAPTER>’ ||’ <NUMBER> 2 </NUMBER>’ ||’ <TITLE> Creazione di un indice di ricerca testo </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come creare un indice di ricerca testo </ABSTRACT>’ ||’ </CHAPTER>’ ||’</BOOK>’);

INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)VALUES(2,

’<BOOK publication_date="2010-02-01">’ ||’ <TITLE> Utilizzo del tipo di dati XML per DB2 per IBM i </TITLE>’ ||’ <ID_NUMBER> 2 ></ID_NUMBER>’ ||

OmniFind Text Search Server 61

Page 68: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

’ <CHAPTER>’ ||’ <NUMBER> 1 </NUMBER>’ ||’ <TITLE> Introduzione </TITLE>’ ||’ <ABSTRACT> Questo capitolo introdurrà il lettore al tipo di dati DB2 XML </ABSTRACT>’ ||’ </CHAPTER> ’ ||’ <CHAPTER>’ ||’ <NUMBER> 2 </NUMBER>’ ||’ <TITLE> Inserimento di dati XML in una tabella DB2 </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come inserire dati XML in una tabella DB2 </ABSTRACT>’ ||’ </CHAPTER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 3 </NUMBER>’ ||’ <TITLE> Ricerca di dati XML </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come eseguire la query di dati nelle colonne XML

utilizzando le funzioni incorporate CONTAINS e SCORE </ABSTRACT>’ ||’ </CHAPTER>’ ||’</BOOK>’);

INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)VALUES(3,

’<BOOK xmlns="http://www.ibm.com/digital_media_library"’ ||’ publication_date="2010-02-01">’ ||’ <TITLE> Utilizzo di spazi nome con OmniFind Text Search Server per DB2 per IBM i </TITLE>’ ||’ <ID_NUMBER> 2 </ID_NUMBER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 1 </NUMBER>’ ||’ <TITLE> Introduzione </TITLE>’ ||’ <ABSTRACT> Questo capitolo introdurrà il lettore agli spazi nome XML </ABSTRACT>’ ||’ </CHAPTER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 2 </NUMBER>’ ||’ <TITLE> Utilizzo di spazi nome predefiniti </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come utilizzare uno spazio nome in una ricerca XML </ABSTRACT>’ ||’ </CHAPTER>’ ||’</BOOK>’);

v Aggiornare l'indice:CALL SYSPROC.SYSTS_UPDATE(’XMLTEST’, ’XML_INDEX’, ’’);

Query di esempio

Esempio 1:

Trovare tutti i documenti che hanno un elemento root BOOK con un discendente diretto TITLE che contieneDB2.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’/BOOK/TITLE[. contains("DB2")]’’ ’) = 1;

Poiché nel termine della ricerca non è specificato un prologo di spazio nome, nessuno spazio nome vienepreso in considerazione nella ricerca.

Tabella 17. Risultato

ID

1

2

3

Esempio 2:

62 IBM i: OmniFind Text Search Server per DB2 per i

Page 69: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Trovare tutti i documenti che hanno un elemento root BOOK con un discendente diretto TITLE che contieneDB2. Utilizzare uno spazio nome di elemento predefinito per indicare che BOOK e TITLE devono esserenello spazio nome (namespace) "http://www.ibm.com/digital_media_library”.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare default element namespace"http://www.ibm.com/digital_media_library";/BOOK/TITLE[. contains("DB2")]’’ ’) = 1;

Tabella 18. Risultato

ID

3

Esempio 3:

Trovare tutti i documenti che hanno un elemento root BOOK che ha un attributo publication_dateposteriore a "2010-01-01" e che ha un elemento secondario TITLE che contiene DB2. Limitare la ricercafacendo in modo che le tag BOOK e TITLE non debbano essere presenti in alcuno spazio nome.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare default element namespace "";/BOOK[@publication_date > xs:date("2010-01-01")]/TITLE[. contains("DB2")]’’ ’) = 1;

Tabella 19. Risultato

ID

2

Esempio 4:

Trovare tutti i documenti con un elemento root BOOK (non in qualche spazio nome) che hanno undiscendente diretto CHAPTER (anch'esso non in uno spazio nome) che contiene le informazionisull'inserimento di dati in una tabella XML.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare default element namespace "";/BOOK/CHAPTER[. contains("inserting XML data into a table")]’’ ’) = 1;

Nota:

v Il testo contenuto in CHAPTER include il testo contenuto negli elementi ABSTRACT e TITLE che sonodiscendenti di CHAPTER.

v La stringa di ricerca non è sensibile al maiuscolo/minuscolo e le variazioni linguistiche delle paroledella ricerca vengono prese in considerazione.

Tabella 20. Risultato

ID

2

Esempio 5:

Trovare tutti i documenti con un elemento root BOOK (nello spazio nome “http://www.ibm.com/digital_media_library”) che hanno un discendente diretto CHAPTER (anche nello spazio nome“http://www.ibm.com/digital_media_library”). CHAPTER deve avere un discendente diretto NUMBER (nello

OmniFind Text Search Server 63

Page 70: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

spazio nome “http://www.ibm.com/digital_media_library") con il valore 1 e contenere anche leinformazioni di testo sulla ricerca in uno spazio nome XML.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare namespace ns1 = "http://www.ibm.com/digital_media_library";/ns1:BOOK/ns1:CHAPTER[. contains("search XML using a namespace") and NUMBER = 1]’’ ’) = 1;

Il documento #3 è il solo documento con delle tag nello spazio nome corretto ma ha delle corrispondenzedi parola chiave solo in un capitolo con un valore numerico di 2 (non 1).

Non viene restituita alcuna riga.

Tabella 21. Risultato

ID

Esempio 6:

Trovare tutti i documenti con un elemento root BOOK (nello spazio nome “http://www.ibm.com/digital_media_library”) che hanno un discendente diretto CHAPTER (nello spazio nome“http://www.ibm.com/digital_media_library”). CHAPTER deve avere un discendente diretto NUMBER (nellospazio nome “http://www.ibm.com/digital_media_library”) con il valore 1. BOOK deve avere undiscendente CHAPTER (non necessariamente con un discendente NUMBER) che contiene le informazioni ditesto sulla ricerca in uno spazio nome XML.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare namespace ns1 = "http://www.ibm.com/digital_media_library";/ns1:BOOK[ns1:CHAPTER contains("search XML using a namespace")]/ns1:CHAPTER[ns1:NUMBER = 1]’’ ’) = 1;

Il documento 3 ha un elemento CHAPTER che corrisponde ai criteri CONTAINS e ha anche un elementoCHAPTER con un discendente NUMBER che ha il valore 1. Pertanto, il documento 3 è una corrispondenza perquesta query.

Tabella 22. Risultato

ID

3

Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.

Esempio di ricerca XMLQuesto esempio include una tabella di documenti XML, un indice di ricerca testo su una colonna XMLnella tabella e sei ricerche di testo SQL con CONTAINS.

64 IBM i: OmniFind Text Search Server per DB2 per i

Page 71: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Nota: utilizzando gli esempi di codice, si accettano i termini indicati nella sezione “Informazionisull'esonero di responsabilità e licenza del codice” a pagina 155.v Creare una tabella XML_DOCUMENTS nello schema XMLTEST per memorizzare i documenti XML:

CREATE TABLE XMLTEST.XML_DOCUMENTS (ID INT, XML_DATA XML, PRIMARY KEY (ID));

v Creare un indice di ricerca testo denominato XML_INDEX sulla colonna XML:call SYSPROC.SYSTS_CREATE(’XMLTEST’, ’XML_INDEX’, ’XMLTEST.XML_DOCUMENTS(XML_DATA)’, ’’);

v Inserire qualche documento XML:INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)VALUES(1,

’<BOOK publication_date="2009-01-01">’ ||’ <TITLE> OmniFind Text Search Server per DB2 </TITLE>’ ||’ <ID_NUMBER> 1 ></ID_NUMBER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 1 </NUMBER>’ ||’ <TITLE> Introduzione </TITLE>’ ||’ <ABSTRACT> Questo capitolo introduce il lettore alle funzionalità di OmniFind

per DB2 per IBM i </ABSTRACT>’ ||’ </CHAPTER>’||’ <CHAPTER>’ ||’ <NUMBER> 2 </NUMBER>’ ||’ <TITLE> Creazione di un indice di ricerca </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come creare un indice di ricerca testo </ABSTRACT>’ ||’ </CHAPTER>’ ||’</BOOK>’);

INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)VALUES(2,

’<BOOK publication_date="2010-02-01">’ ||’ <TITLE> Utilizzo del tipo di dati XML per DB2 per IBM i </TITLE>’ ||’ <ID_NUMBER> 2 ></ID_NUMBER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 1 </NUMBER>’ ||’ <TITLE> Introduzione </TITLE>’ ||’ <ABSTRACT> Questo capitolo introdurrà il lettore al tipo di dati DB2 XML </ABSTRACT>’ ||’ </CHAPTER> ’ ||’ <CHAPTER>’ ||’ <NUMBER> 2 </NUMBER>’ ||’ <TITLE> Inserimento di dati XML in una tabella DB2 </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come inserire dati XML in una tabella DB2 </ABSTRACT>’ ||’ </CHAPTER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 3 </NUMBER>’ ||’ <TITLE> Ricerca di dati XML </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come eseguire la query di dati nelle colonne XML

utilizzando le funzioni incorporate CONTAINS e SCORE </ABSTRACT>’ ||’ </CHAPTER>’ ||’</BOOK>’);

INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)VALUES(3,

’<BOOK xmlns="http://www.ibm.com/digital_media_library"’ ||’ publication_date="2010-02-01">’ ||’ <TITLE> Utilizzo di spazi nome con OmniFind Text Search Server per DB2 per IBM i </TITLE>’ ||’ <ID_NUMBER> 2 </ID_NUMBER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 1 </NUMBER>’ ||’ <TITLE> Introduzione </TITLE>’ ||’ <ABSTRACT> Questo capitolo introdurrà il lettore agli spazi nome XML </ABSTRACT>’ ||’ </CHAPTER>’ ||’ <CHAPTER>’ ||’ <NUMBER> 2 </NUMBER>’ ||’ <TITLE> Utilizzo di spazi nome predefiniti </TITLE>’ ||’ <ABSTRACT> Questo capitolo spiegherà come utilizzare uno spazio nome in una ricerca XML </ABSTRACT>’ ||’ </CHAPTER>’ ||’</BOOK>’);

OmniFind Text Search Server 65

Page 72: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v Aggiornare l'indice:CALL SYSPROC.SYSTS_UPDATE(’XMLTEST’, ’XML_INDEX’, ’’);

Query di esempio

Ricerca 1:

Trovare tutti i documenti che hanno un elemento root BOOK con un discendente diretto TITLE che contieneDB2.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’/BOOK/TITLE[. contains("DB2")]’’ ’) = 1;

Poiché nel termine della ricerca non è specificato un prologo di spazio nome, nessuno spazio nome vienepreso in considerazione nella ricerca.

Tabella 23. Risultato

ID

1

2

3

Ricerca 2:

Trovare tutti i documenti che hanno un elemento root BOOK con un discendente diretto TITLE che contieneDB2. Utilizzare uno spazio nome di elemento predefinito per indicare che BOOK e TITLE devono essere in"http://www.ibm.com/digital_media_library” spazionome.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare default element namespace"http://www.ibm.com/digital_media_library";/BOOK/TITLE[. contains("DB2")]’’ ’) = 1;

Tabella 24. Risultato

ID

3

Ricerca 3:

Trovare tutti i documenti che hanno un elemento root BOOK che ha un attributo publication_dateposteriore a "2010-01-01" e che ha un elemento secondario TITLE che contiene DB2. Limitare la ricercafacendo in modo che le tag BOOK e TITLE non debbano essere presenti in alcuno spazio nome.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare default element namespace "";/BOOK[@publication_date > xs:date("2010-01-01")]/TITLE[. contains("DB2")]’’ ’) = 1;

Tabella 25. Risultato

ID

2

Ricerca 4:

66 IBM i: OmniFind Text Search Server per DB2 per i

Page 73: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Trovare tutti i documenti con un elemento root BOOK (non in qualche spazio nome) che hanno undiscendente diretto CHAPTER (anch'esso non in uno spazio nome) che contiene le informazionisull'inserimento di dati in una tabella XML.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare default element namespace "";/BOOK/CHAPTER[. contains("inserting XML data into a table")]’’ ’) = 1;

Nota:

v Il testo contenuto in CHAPTER include il testo contenuto negli elementi ABSTRACT e TITLE che sonodiscendenti di CHAPTER.

v La stringa di ricerca non è sensibile al maiuscolo/minuscolo e le variazioni linguistiche delle paroledella ricerca vengono prese in considerazione.

Tabella 26. Risultato

ID

2

Ricerca 5:

Trovare tutti i documenti con un elemento root BOOK (nello spazio nome “http://www.ibm.com/digital_media_library”) che hanno un discendente diretto CHAPTER (anche nello spazio nome“http://www.ibm.com/digital_media_library”). CHAPTER deve avere un discendente diretto NUMBER (nellospazio nome “http://www.ibm.com/digital_media_library") con il valore 1 e contenere anche leinformazioni di testo sulla ricerca in uno spazio nome XML.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare namespace ns1 = "http://www.ibm.com/digital_media_library";/ns1:BOOK/ns1:CHAPTER[. contains("search XML using a namespace") and NUMBER = 1]’’ ’) = 1;

Il documento #3 è il solo documento con delle tag nello spazio nome corretto ma ha delle corrispondenzedi parola chiave solo in un capitolo con un valore numerico di 2 (non 1).

Non viene restituita alcuna riga.

Tabella 27. Risultato

ID

Ricerca 6:

Trovare tutti i documenti con un elemento root BOOK (nello spazio nome “http://www.ibm.com/digital_media_library”) che hanno un discendente diretto CHAPTER (nello spazio nome“http://www.ibm.com/digital_media_library”). CHAPTER deve avere un discendente diretto NUMBER (nellospazio nome “http://www.ibm.com/digital_media_library”) con il valore 1. BOOK deve avere undiscendente CHAPTER (non necessariamente con un discendente NUMBER) che contiene le informazioni ditesto sulla ricerca in uno spazio nome XML.SELECT IDFROM XMLTEST.XML_DOCUMENTSWHERE CONTAINS(XML_DATA, ’@xmlxp:’’declare namespace ns1 = "http://www.ibm.com/digital_media_library";/ns1:BOOK[ns1:CHAPTER contains("search XML using a namespace")]/ns1:CHAPTER[ns1:NUMBER = 1]’’ ’) = 1;

OmniFind Text Search Server 67

Page 74: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il documento 3 ha un elemento CHAPTER che corrisponde ai criteri CONTAINS e ha anche un elementoCHAPTER con un discendente NUMBER che ha il valore 1. Pertanto, il documento 3 è una corrispondenza perquesta query.

Tabella 28. Risultato

ID

3

Grammatica delle query di ricerca XMLLa grammatica per la ricerca XML è basata su un sottoinsieme del linguaggio XPath, definito dallagrammatica EBNF (Extended Backus-Naur Form). Le query non conformi alla grammatica supportatasono rifiutate dal parser delle query.

La grammatica EBNF è stata semplificata nei seguenti modi:v I nomi percorso assoluti nelle espressioni predicato non sono consentiti.v È riconosciuto un solo asse (tag) e solo in direzione in avanti (('/' e '//').v Si applicano delle restrizioni semantiche aggiuntive all'utilizzo del carattere jolly (consultare la sezione

precedente su "Supporto di caratteri jolly delle espressioni percorso" in “Ricerca XML” a pagina 53.v Richiedere che la dichiarazione di spazio nome sia specificata nella stringa di ricerca prima di qualsiasi

utilizzo, implicito o esplicito, dello spazio nome. Se la dichiarazione di spazio nome non è inclusa, glispazi nome non sono presi in considerazione nella ricerca.

v Le espressioni di percorso relativo devono avere una tag o un nome di attributo inclusinell'espressione. La query ‘/' per selezionare il nodo root e ‘//' per selezionare tutti i nodi non sonoespressioni valide.

La seguente tabella mostra la grammatica supportata nella notazione EBNF.

Tabella 29. Grammatica di query supportata nella notazione EBNF

Simbolo Produzione

XMLQuery ::= QueryPrefix NameSpaceDeclaration QueryString| QueryPrefix QueryString

QueryPrefix ::= @xmlxp:

QueryString ::= "'" PathExpr "'"

PathExpr ::= RelativePathExpr| "/" RelativePathExpr?| "//" RelativePathExpr

RelativePathExpr ::= StepExpr ( ( "/" | "//" ) StepExpr )*

StepExpr ::= ( "." | AbbrevForwardStep ) Predicate?

AbbrevForwardStep ::= "@"? (QName | "*")

Predicate ::= "[" PredicateExpr "]"

PredicateExpr ::= Expr| PredicateExpr ( "and" | "or" )| "(" PredicateExpr ")"

Expr ::= ComparisonExpr | ContainmentExpr

ComparisonExpr ::= PathExpr ComparisonOp Literal

ComparisonOp ::= "=" | "<" | ">" | "!=" | "<=" | ">="

Literal ::= StringLiteral | NumericLiteral | DateLiteral

ContainmentExpr ::= PathExpr "contains" "(" StringLiteral ")"| PathExpr "excludes" "(" StringLiteral ")"

68 IBM i: OmniFind Text Search Server per DB2 per i

Page 75: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 29. Grammatica di query supportata nella notazione EBNF (Continua)

StringLiteral ::= "\"" [^"]* "\""| "'" [^']* "'"

DateLiteral ::= "xs:date(\"" xmlDate "\")"| "xs:dateTime(\"" xmlDateTime "\")"

xmlDate ::= yyyy"-"mm"-"dd

xmlDateTime ::= yyyy"-"mm"-"dd [T] hh":"mm":"ss"."uuuuuu

NameSpaceDeclaration ::= defaultNameSpace (NameSpacePrefixDeclaration)*

defaultNameSpace ::= “declare default element namespace“ StringLiteral “;”

NameSpacePrefixDeclaration ::= “declare namespace” NameSpacePrefix “=”StringLiteral “;”

NameSpacePrefix ::= [^”:]+

Gestione di un OmniFind(r) Text Search Server per DB2(r) per iÈ possibile gestire OmniFind Text Search Server per DB2 per i utilizzando le tecniche e gli strumenti quidi seguito indicati.

Avvio di OmniFind Text Search Server per DB2 per iÈ possibile avviare OmniFind Text Search Server per DB2 per i richiamando SYSPROC.SYSTS_START.

OMNIFIND avvia il server di ricerca testo automaticamente come necessario, a condizione cheSERVERSTATUS in QSYS2.SYSTEXTSERVERS sia 0. Questa normativa consente l'avvio automatico delserver di ricerca testo quando viene avviato il sistema host. È tuttavia possibile avviare il servermanualmente, se necessario.

Per avviare il server:

CALL SYSPROC.SYSTS_START(serverid)

Se eseguito correttamente, SERVERSTATUS in QSYS2.SYSTEXTSERVERS è impostato su 0 dopo ilrichiamo della procedura. Quando il server è locale, i seguenti lavori sono attivi in background:v QJVAEXEC QDBTS BCI 0.0 JVM-com.ibm.esv QJVAEXEC QDBTS BCI 0.0 PGM-textExtracv QJVAEXEC QDBTS BCI 0.0 PGM-textExtracv QJVAEXEC QDBTS BCI 0.0 PGM-textExtracv QJVAEXEC QDBTS BCI 0.0 PGM-textExtrac

dove QDBTS è il profilo utente OmniFind creato durante l'installazione del prodotto.

Potrebbero volerci alcuni minuti prima che tutti questi lavori siano attivi e che il server di testo possaessere utilizzato.Riferimenti correlati:“SYSPROC.SYSTS_START” a pagina 15È possibile abilitare le funzioni di ricerca testo DB2 richiamando la procedura memorizzataSYSPROC.SYSTS_START.“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.

OmniFind Text Search Server 69

Page 76: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Arresto di OmniFind Text Search Server per DB2 per iÈ possibile arrestare OmniFind Text Search Server per DB2 per i manualmente utilizzando lo script diarresto fornito.

Se OmniFind Text Search Server per DB2 per i è stato installato come un servizio, il server di ricerca testoviene arrestato automaticamente ogni volta che il sistema host viene arrestato. È tuttavia possibilearrestare il server manualmente anche se OmniFind Text Search Server per DB2 per i è stato installatocome un servizio.

Per arrestare OmniFind Text Search Server per DB2 per i:1. Indicare nel catalogo SYSTEXTSERVER che il server viene arrestato richiamando

SYSPROC.SYSTS_STOP.v Per arrestare tutti i server: CALL SYSPROC.SYSTS_STOP().v Per arrestare uno specifico server:

a. Eseguire una query del catalogo server per ottenere l'idserver che si desidera arrestare:SELECT SERVERID,SERVERPORT,SERVERSTATUS,SERVERPATH

FROM QSYS2.SYSTEXTSERVERS

Nota: SERVERPATH identifica il server. SERVERSTATUS indica se il server è attualmente attivo (0) oinattivo (1).

b. Richiamare SYSPROC.SYSTS_STOP, specificando l'idserver numerico oppure il nome alias delserver che si desidera arrestare:CALL SYSPROC.SYSTS_STOP(idserver).

2. Indicare nel catalogo SYSTEXTSERVER che il server viene arrestato richiamandoSYSPROC.SYSTS_SHUTDOWN. Oltre ad impostare SERVERSTATUS su inattivo (1), questa proceduraterminerà anche i lavori del server di ricerca testo sul sistema host.v Per chiudere tutti i server: CALL SYSPROC.SYSTS_SHUTDOWN().v Per chiudere uno specifico server:

a. Eseguire una query del catalogo server per ottenere l'idserver che si desidera chiudere:SELECT SERVERID,SERVERPORT,SERVERSTATUS,SERVERPATH

FROM QSYS2.SYSTEXTSERVERS

Nota: SERVERPATH identifica il server. SERVERSTATUS indica se il server è attualmente attivo (0) oinattivo (1).

b. Richiamare SYSPROC.SYSTS_SHUTDOWN, specificando l'idserver numerico o il nome alias delserver che si desidera chiudere:CALL SYSPROC.SYSTS_SHUTDOWN(idserver).

3. (Facoltativo) Arrestare il server stesso richiamando lo script di arresto. L'arresto del server terminatutti i lavori del server di ricerca testo sul sistema host. Arrestare il server nell'ambiente Qshell.Per arrestare il server locale, immettere il seguente comando dalla riga comandi:QSH CMD(’cd /QOpenSys/QIBM/ProdData/TextSearch/server1/bin; shutdown.sh’) .Se il server da arrestare non è il server locale predefinito creato dal processo di installazione, ènecessario ottenere il valore SERVERPATH corretto da QSYS2.SYSTEXTSERVERS. Utilizzare ilSERVERPATH invece di /QOpenSys/QIBM/ProdData/TextSearch/server1/bin.Se si arresta il server utilizzando lo script di arresto, il catalogo SERVERSTATUS non viene modificatonello stato inattivo (1). Quando le procedure memorizzate SYSTS_CREATE, SYSTS_UPDATE eSYSTS_DROP vengono richiamate la volta successiva, oppure quando una funzione incorporataCONTAINS o SCORE viene richiamata come parte di una query SQL, il server verrà avviatoautomaticamente.

Riferimenti correlati:

70 IBM i: OmniFind Text Search Server per DB2 per i

Page 77: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

“SYSPROC.SYSTS_STOP” a pagina 17È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_STOP per arrestare le funzioni diricerca di testo DB2. Questa procedura memorizzata imposta il valore SERVERSTATUS nel catalogoQSYS2.SYSTEXTSERVERS su 1 (arrestato).“SYSPROC.SYSTS_SHUTDOWN” a pagina 38È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_SHUTDOWN per chiudere le funzionidi ricerca testo DB2®. Questa procedura memorizzata imposta il valore SERVERSTATUS nel catalogoQSYS2.SYSTEXTSERVERS su 1 (arrestato) ed inoltre termina i lavori del server di ricerca testo sul sistemahost.“Tabella di gestione QSYS2.SYSTEXTSERVERS” a pagina 114È possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.

Salvataggio e ripristino degli indici di ricerca testoÈ possibile salvare e ripristinare gli indici di ricerca testo con o senza dati.

Salvataggio e ripristino di un indice di ricerca testo senza datiÈ possibile salvare e ripristinare una struttura dell'indice di ricerca testo senza i dati di indice. Il processodi salvataggio e di ripristino può essere eseguito utilizzando i comandi CL SAVOBJ e SAVLIB.

Quando si crea un indice di ricerca testo utilizzando SYSTS_CREATE, viene creata una vista DB2utilizzando lo schema e il nome dell'indice come nome della vista. La vista funge da meccanismo per ilsalvataggio e il ripristino della struttura dell'indice.

L'utente può salvare la vista con gli stessi metodi utilizzati per salvare le viste e le tabelle di database.(Vedere i comandi CL SAVOBJ o SAVLIB). Il salvataggio della vista salva automaticamente leinformazioni aggiuntive necessarie per ricreare l'indice durante il ripristino.

La vista può essere ripristinata utilizzando i comandi CL RSTOBJ o RSTLIB. DB2 per i riconosce che lavista rappresenta un indice di ricerca testo e ricrea l'indice. Dopo che la struttura dell'indice è stataricreata, un aggiornamento verrà inoltrato a un lavoro di background per ricompilare i dati dell'indice.

Durante il processo di ripristino, sono necessarie delle ulteriori considerazioni:1. Se non è possibile avviare il server di ricerca testo, o se il prodotto richiesto non è installato sul

sistema, il ripristino ha esito negativo. Consultare i Requisiti software per un elenco dei prodottirichiesti.

2. Se l'indice di ricerca testo esiste sul sistema, vengono eseguite le seguenti azioni.a. Se le informazioni sull'indice esistente corrispondono esattamente all'indice di cui si sta eseguendo

il ripristino, il ripristino ha esito positivo. L'indice non viene ricreato.b. Se le informazioni sull'indice esistente non corrispondono all'indice di cui si sta eseguendo il

ripristino, e non è possibile modificarle in modo che corrispondano senza ricreare l'indice, ilripristino ha esito negativo.

c. Se le informazioni sull'indice esistente non corrispondono all'indice di cui si sta eseguendo ilripristino, ma è possibile modificarle in modo che corrispondano utilizzando SYSTS_ALTER,l'indice esistente viene modificato in modo da corrispondere all'indice che era stato salvato.L'indice non viene ricreato.

3. L'indice viene ripristinato per utilizzare lo stesso server di ricerca testo che era in uso quando è statoeseguito il salvataggio. Se il server utilizzato quando è stato eseguito il salvataggio non è definito,viene selezionato un server attualmente disponibile. Se il server salvato è definito ma non èdisponibile, il ripristino ha esito negativo.

4. Se l'indice di ricerca testo non può essere creato per qualsiasi altra ragione, come ad esempio unacolonna incompatibile nella tabella di base, il ripristino ha esito negativo.

OmniFind Text Search Server 71

Page 78: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

5. Il nome della tabella di gestione temporanea in QSYS2, i nomi di trigger aggiunti alla tabella di base eil nome raccolta sul server di ricerca testo possono cambiare, poiché vengono generati dal sistema.

6. I sinonimi che sono stati aggiunti al dizionario di sinonimi dell'indice di ricerca testo non vengonoconservati.

7. Se l'indice esiste nei cataloghi di sistema quando viene eseguito il ripristino, e la vista non esisteattualmente sul sistema, viene ripristinata solo la vista. La tabella di gestione temporanea, la raccoltadi server di ricerca testo e i trigger sulla tabella di base non vengono creati.In questo caso, si presume che l'indice di ricerca testo sia parte di un ripristino più ampio in cui lesingole parti dell'indice erano state salvate esplicitamente dall'utente e sono ora tutte in fase diripristino (come ad esempio il ripristino dell'intero sistema).Tutte le parti richieste dell'indice devono essere ripristinate prima che l'indice funzioni. Èresponsabilità degli utenti assicurare che tutte le parti dell'indice siano sincronizzate.

Gli indici di ricerca testo sono supportati dal comando RSTDFROBJ (Ripristino oggetti differiti). L'utilizzodel parametro DFRID sui comandi CL RSTOBJ e RSTLIB è consigliato. Questo parametro consente ilripristino degli indici di ricerca testo utilizzando il comando RSTDFROBJ dopo la correzione dellecondizioni comuni che impediscono la creazione dell'indice.

Degli esempi di condizioni che causano il differimento dell'indice sono i seguenti:v Un prodotto richiesto non era installato.v Un server di ricerca testo non era disponibile o definito.v La tabella di base non esisteva.Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.“SYSPROC.SYSTS_ALTER” a pagina 28È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_ALTER per modificare gli attributi diun indice creato da SYSPROC.SYSTS_CREATE. Vengono modificati solo gli attributi specificati in modoesplicito in questa procedura. Tutti gli altri attributi dell'indice rimangono inalterati.Informazioni correlate:Save Object (SAVOBJ)Save Library (SAVLIB)Restore Object (RSTOBJ)Restore Library (RSTLIB)Restore Deferred Objects (RSTDFROBJ)

Salvataggio e ripristino di un indice di ricerca testo con datiIl salvataggio e il ripristino di un indice di ricerca testo con dati è un'operazione più completa rispettoalla stessa operazione per un indice di ricerca testo senza dati.

È necessario salvare i seguenti oggetti:v L'indice di ricerca testo (memorizzato nell'integrated file system).v La tabella di gestione temporanea utilizzata come un file di registrazione che tiene traccia delle

modifiche di record nella tabella di base (su cui viene creato l'indice). La tabella di gestionetemporanea si trova nella libreria QSYS2. Il suo nome inizia con QDBTS, ad esempio QDBTS00001.

v La vista, che è l'oggetto di database che rappresenta l'indice di testo. La vista ha lo stesso nomedell'indice di testo.

v La tabella di base su cui viene creato l'indice.

72 IBM i: OmniFind Text Search Server per DB2 per i

Page 79: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v i cataloghi SQL che memorizzano le informazioni per tenere traccia dell'indice.

Completare la seguente procedura per salvare gli indici di ricerca testo:1. Consigliato: aggiornare gli indici eseguendo prima le operazioni di aggiornamento (SYSTS_UPDATE)

per gli indici di ricerca testo.2. Salvare la vista e la tabella di base utilizzando le tecniche di salvataggio standard, come ad esempio il

comando SAVOBJ.3. Salvare le tabelle di gestione temporanea presenti in QSYS2 utilizzando le tecniche di salvataggio

standard. Ad esempio, SAVOBJ LIB(QSYS2) OBJ(QDBTS*).4. Salvare i cataloghi di indice di ricerca testo in QSYS2:

I nomi di catalogo iniziano tutti con SYSTXT, ad esempio SYSTXTSRVR. Come per gli altri cataloghiSQL in QSYS2, è responsabilità dell'utente assicurare che un backup sia stato salvato e sia disponibile.Questo backup può essere realizzato in uno di questi due modi:a. L'intera libreria può essere salvata come parte del comando SAVLIB, specificando il parametro LIB

come *ALLUSR o *IBM.b. Gli specifici cataloghi di ricerca testo possono essere salvati utilizzando il comando SAVOBJ,

specificando LIB(QSYS2) e OBJ((SYSTXT*)).5. Salvare le informazioni sull'indice di ricerca testo nell'IFS (integrated file system). Queste informazioni

includono l'intero contenuto dell'indirizzario config nel percorso di server di testo.Il percorso di server di testo può essere determinato eseguendo la query della colonna SERVERPATHdel catalogo SYSTXTSRVR per il server cui si è interessati. Al percorso server è accodato l'indirizzariobin, che si sostituisce con l'indirizzario config.Una tecnica di salvataggio comune consiste nell'utilizzare il comando SAV, anche se funziona qualsiasitipo di compressione di salvataggio.

Nota: queste informazioni di salvataggio sono applicabili solo ai server di testo in esecuzione su IBM i.

Esempio:

Si supponga che si desidera salvare tutti gli indici di testo associati al server di testo predefinito creato daOMNIFIND. Si ha una tabella QGPL/MYDOCS con l'indice di testo QGPL/MYDOCIX creato su di essa.In questo esempio, il supporto di salvataggio sono i file di salvataggio.

Completare la seguente procedura:1. Salvare tutte le tabelle di gestione temporanea e i cataloghi OMNIFIND da QSYS2:

SAVOBJ OBJ(QDBTS* SYSTXT*) LIB(QSYS2) DEV(*SAVF) SAVF(QGPL/SAVFQSYS2)

2. Salvare la vista e la tabella di base:SAVOBJ OBJ(MYDOCS MYDOCIX) LIB(QGPL) DEV(*SAVF) SAVF(QGPL/SAVFMYFILE)

3. Utilizzando SQL, ottenere il nome percorso del server di testo. In questo esempio, serverid = 2:SELECT SERVERPATH FROM systxtsrvr WHERE serverid=2

Il valore SERVERPATH restituito è /QOpenSys/QIBM/ProdData/TextSearch/server1/bin/.

Nota: verificare che si sta eseguendo la query per il server corretto.4. Sostituire config a bin/ e salvare gli indici di testo:

SAV DEV(’/QSYS.LIB/QGPL.LIB/SAVIFS.FILE’) OBJ((’/QOpenSys/QIBM/ProdData/TextSearch/server1/config’))

Gli indici di testo sono ora salvati nei file di salvataggio QGPL/SAVFMYFILE, QGPL/SAVFQSYS2 eQGPL/SAVIFS.

OmniFind Text Search Server 73

Page 80: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il ripristino di indice di testo deve essere eseguito nello stesso ordine del salvataggio. È NECESSARIOripristinare prima i cataloghi QSYS2.Riferimenti correlati:“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.Informazioni correlate:Save Object (SAVOBJ)Save Library (SAVLIB)

Determinazione del problemaÈ possibile utilizzare i messaggi di sistema e di traccia registrati per determinare l'origine dei problemiche possono verificarsi.

Le registrazioni del server OmniFind Text Search Server per DB2 per i si trovano nell'indirizzario<INSTALL_HOME>/log. La registrazione del server predefinita creata in fase di installazione si trovanell'indirizzario /QOpenSys/QIBM/ProdData/TextSearch/server1/log.

Per impostazione predefinita, la registrazione di traccia è disattivata e il livello di registrazione di sistemaè impostato su informational. È possibile utilizzare lo strumento di configurazione per modificare leopzioni di livello di registrazione e traccia.

Alle registrazioni del server viene applicata una rotazione basata sulla dimensione. Vengono memorizzatele cinque copie più recenti delle registrazioni del server di dimensioni non superiori agli 8 MB. Èpossibile visualizzare e salvare le registrazioni del server utilizzando lo script fornito.

Su IBM i o su un server Linux, lo script è logformatter.sh. Su un server Windows, lo script èlogformatter.bat.

Opzioni

Lo script ha le seguenti opzioni.

-f fileregistrazioneSpecifica il file di registrazione del server che si desidera formattare.

-l localeSpecifica la locale da utilizzare quando si scrivono i messaggi riformattati. Ad esempio, specificareen_US per l'inglese oppure ja_JP per il giapponese. Questo valore è facoltativo. Il valore predefinito èen_US.

-o fileemissioneSpecifica il file di emissione dove i messaggi della registrazione riformattati devono essere scrittiutilizzando la codifica UTF-8. Questo valore è facoltativo. Se non si specifica questa opzione, vieneutilizzato un file di emissione standard.

-? Stampa il messaggio della guida. Questo valore è facoltativo.

-v Specifica la modalità per visualizzare i messaggi di debug. Questo valore è facoltativo.

Visualizzazione e salvataggio delle registrazioni del serverÈ possibile utilizzare gli script forniti per visualizzare e salvare le registrazioni del server. Questeregistrazioni possono aiutare a determinare l'origine dei problemi.

Per visualizzare e salvare una registrazione del server:1. Per visualizzare la registrazione del server, eseguire uno dei seguenti comandi:

74 IBM i: OmniFind Text Search Server per DB2 per i

Page 81: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Opzione Descrizione

Su IBM i (nell'ambiente QSH) bin/logformatter.sh -flog/System.0.log

Su un server Linux bin/logformatter.sh -flog/System.0.log

Su un server Windows bin/logformatter.bat -flog/System.0.log

2. Per salvare la registrazione del server in un file in modo da poterla leggere in un editor di file,eseguire uno dei seguenti comandi:

Opzione Descrizione

Su IBM i (nell'ambiente QSH) bin/logformatter.sh-f log/System.0.log–o <nome file emissione>

Su un server Linux bin/logformatter.sh-f log/System.0.log–o <nome file emissione>

Su un server Windows bin/logformatter.bat-f log/System.0.log–o <nome file emissione>

Strumenti di gestioneOMNIFIND fornisce degli strumenti che è possibile utilizzare per le attività comuni. Queste attivitàincludono la configurazione e la gestione di un server di ricerca testo aggiuntivo e l'aggiunta di undizionario di sinonimi a una raccolta.

Questi strumenti sono degli script shell piuttosto che comandi CL. Possono essere richiamatinell'ambiente script avviato tramite i comandi CL STRQSH (Avvio QSH) o QSH (QSH).

Questi strumenti non autenticano gli ID utente. Tuttavia, questi strumenti possono essere eseguiti solo daun utente con un accesso valido al server di ricerca testo.Informazioni correlate:Start QSH (STRQSH)Start QSH (QSH)

Strumento di configurazioneUtilizzare lo strumento di configurazione per personalizzare le impostazioni di configurazione dopol'installazione di OmniFind Text Search Server per DB2 per i.

Per personalizzare la maggior parte delle impostazioni di configurazione, è necessario arrestare il serverdi ricerca testo prima di eseguire lo strumento di configurazione.

Tuttavia, quando il server è in esecuzione, è possibile visualizzare le seguenti opzioni:v il token di autenticazione correntev la porta del serverv le proprietà correnti del sistema

OmniFind Text Search Server 75

Page 82: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Lo strumento configServerAndDB2

Lo strumento configServerAndDB2 (configServerAndDB2.sh) si trova nell'indirizzariointegrated-file-system /QOpenSys/QIBM/ProdData/TextSearch. Questo strumento può essere utilizzato percreare o modificare le voci nel file di catalogo DB2 SYSTEXTSERVERS.

Può anche essere utilizzato per configurare il token di autenticazione oppure il numero di porta associaticon il server specifico. Lo strumento modifica o imposta i valori per SERVERAUTHTOKEN eSERVERPORT nel file di catalogo DB2 SYSTEXTSERVERS.

Se si desidera creare un server aggiuntivo che viene eseguito localmente sul sistema, utilizzare invece lo“Strumento ServerInstance” a pagina 89.

Lo strumento configServerAndDB2 (configServerAndDB2.sh) viene richiamato con cinque parametri:1. Il primo parametro è generateToken o configureHTTPListener.2. Il secondo parametro è -serverPath.3. Il terzo parametro è il percorso al nodo root nell'integrated file system dove sono memorizzate le

informazioni correlate al server. Esempio: /QOpenSys/QIBM/ProdData/TextSearch/server2.4. Il quarto e il quinto parametro variano a seconda del valore del primo parametro.

v Se il primo parametro è generateToken, il quarto parametro è -seed seguito da un numero intero(ad esempio, 1) come quinto parametro

v Se il primo parametro è configureHTTPListener, il quarto parametro è -adminHTTPPort. Il quintoparametro è un valore numero intero utilizzato come porta socket per il server.

Sono qui di seguito riportati due esempi:v STRQSH

cd /QOpenSys/QIBM/ProdData/TextSearchconfigServerAndDB2.sh generateToken -serverPath /QOpenSys/QIBM/ProdData/TextSearch/server2 -seed 1

v STRQSHcd /QOpenSys/QIBM/ProdData/TextSearchconfigServerAndDB2.sh configureHTTPListener -serverPath /QOpenSys/QIBM/ProdData/TextSearch/server2

-adminHTTPPort 9997

Lo script configTool

Lo script configTool.sh è disponibile per ciascun server locale. Non è consigliato utilizzarlo nella modificadelle voci server. È possibile utilizzarlo per stampare le informazioni sul server (come ad esempioprintAll e printToken).

Tabella 30. Comandi per eseguire lo strumento di configurazione

Su IBM i:

configTool.sh<opzione_comando_obbligatoria><argomenti_globali_obbligatori><argomenti_globali_facoltativi><opzioni_comando_facoltative>

Su un server Linux

configTool.sh<opzione_comando_obbligatoria><argomenti_globali_obbligatori><argomenti_globali_facoltativi><opzioni_comando_facoltative>

Su un server Windows

76 IBM i: OmniFind Text Search Server per DB2 per i

Page 83: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 30. Comandi per eseguire lo strumento di configurazione (Continua)

configTool.bat<opzione_comando_obbligatoria><argomenti_globali_obbligatori><argomenti_globali_facoltativi><opzioni_comando_facoltative>

Opzioni comando

Lo strumento di configurazione supporta le seguenti opzioni di comando:

configureParamsSpecifica i parametri di sistema che è possibile configurare. È possibile configurare i seguentiparametri:

-configPathSpecifica il percorso assoluto alla cartella di configurazione che contiene il file config.xml.

-adminHTTPPortSpecifica il numero di porta HTTP di gestione. Se si verifica un errore, viene restituito un codicedi errore -3.

-logPathSpecifica il percorso assoluto all'indirizzario di registrazione.

-temDirPathSpecifica il percorso assoluto all'indirizzario temporaneo.

-numberOfIndexersSpecifica il numero di sottosistemi di indicizzazione di ricerca testo simultanei.

-numberOfTokenizersSpecifica il numero di sottosistemi simultanei utilizzati per analizzare l'immissione in token.

-maxDocumentSizeSpecifica il numero massimo di caratteri da indicizzare per un documento. Se si verifica unerrore, viene restituito un codice di errore -3.

-logLevelSpecifica il livello di registrazione per i messaggi di sistema nel file di registrazione. Il livellopredefinito è informational. Delle opzioni aggiuntive sono warning e severe.

-maxHeapSizeInizia e termina la dimensione heap in un formato accettato dalla Java Virtual Machine. Se siverifica un errore, viene restituito un codice di errore -5.

printTokenStampa il token di autenticazione e la chiave di codifica correnti.

printAllStampa tutti i valori correnti per le opzioni che è possibile configurare con questo strumento.

printAdminHTTPPortStampa il valore corrente per la porta HTTP di gestione.

generateTokenGenera il token di autenticazione.

Argomenti globali

-configPathSpecifica il percorso assoluto alla cartella di configurazione che contiene il file config.xml. Questoargomento globale è obbligatorio.

OmniFind Text Search Server 77

Page 84: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

-localeSpecifica l'impostazione di locale di cinque caratteri per scrivere i messaggi nel file di traccia. Se nonsi specifica questa impostazione, viene utilizzato il valore predefinito -en_US.

Esempio

Su un server Linux, utilizzare il seguente comando per stampare il token di autenticazione corrente:configTool.sh printToken -configPath <percorso> <argomenti-globali_facoltativi>

Informazioni correlate:Start QSH (QSH)

SYSPROC.SYSTS_REMOVEÈ possibile eliminare gli indici orfani con la procedura memorizzata SQL SYSPROC.SYSTS_REMOVE.

Autorizzazione

Il nome raccolta dei possibili indici orfani può essere identificato utilizzando la UDTF (User DefinedTable Function) QDBTS_LISTINXSTS.

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno di questiprivilegi:v L'autorizzazione *JOBCTLv L'utilizzo della funzione speciale di sicurezza QIBM_DB_SQLADM

Sintassi

>>-SYSPROC.SYSTS_REMOVE ( nome-raccolta ) -><

Parametro

nome-raccoltaSpecifica un valore letterale stringa che identifica il nome della raccolta da eliminare.

Nota: questa procedura utilizza lo script di shell adminTool.sh per eliminare l'indirizzario della raccolta.Per utilizzare questo script di shell, il server deve essere nello stato operativo. Se il server non è avviato,questa procedura restituisce un messaggio di errore.

SQL per SYSTS_REMOVECREATE PROCEDURE SYSPROC.SYSTS_REMOVE(

IN COLLECTIONNAME VARCHAR(255) CCSID 1208)EXTERNAL NAME QDBTSLIB.DSN5RMCOLLDYNAMIC RESULT SETS 0LANGUAGE C++PARAMETER STYLE SQLPROGRAM TYPE MAINCOMMIT ON RETURN NOINHERIT SPECIAL REGISTERS;

Esempiv Per rimuovere un indice orfano con un nome raccolta di 0_65_2815_2008_06_02_11_58_22_901726 dal

gruppo ASP *SYSBASE , immettere il seguente comando da qualsiasi interfaccia SQL:CALL SYSPROC.SYSTS_REMOVE(’0_65_2815_2008_06_02_11_58_22_901726’)

La procedura memorizzata SYSTS_REMOVE controlla se le informazioni sull'indice sono presenti nellatabella di catalogo QSYS2.SYSTEXTINDEXES. In caso affermativo, viene restituito il messaggio dierrore DSX_INDEX_EXIST; in caso contrario, la procedura cerca nell'indirizzario config/collectionsdel server 65.

78 IBM i: OmniFind Text Search Server per DB2 per i

Page 85: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Se la raccolta non esiste, viene restituito il messaggio di errore DSX_COLLECTION_NOT_FOUND; sela raccolta esiste, la procedura richiama adminTool.sh per eliminare la raccolta.La procedura controlla quindi nuovamente l'indirizzario per verificare se la raccolta è stata eliminata.Se la raccolta non è stata eliminata, all'utente viene restituito il messaggio di erroreDSX_REMOVE_COLLECTION_FAILED.

Nota: quando la raccolta sul server di ricerca testo si trova in un gruppo IASP ((Independent AuxiliaryStorage Pool), il sottoprocesso che richiama la procedura memorizzata SYSTS_REMOVE deve essere inesecuzione nello spazio nome dell'IASP (Independent ASP). Utilizzare il comando SETASPGRP(Impostazione gruppo ASP).

v Per rimuovere un indice orfano con un nome raccolta di 33_7_26_2008_06_18_21_28_39_407824 da unIASP (Independent ASP) iaspXXX, è possibile utilizzare i seguenti comandi:CL:SETASPGRP(isapXXX)

SQL:CALL SYSPROC.SYSTS_REMOVE(’ 33_7_26_2008_06_18_21_28_39_407824’)

Nota: se si utilizza System i Navigator, fare clic con il tasto destro del mouse sul nome del database perl'IASP (Independent ASP) ed eseguire gli script SQL.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTINDEXES” a pagina 111È possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.“Ricerca di indici mancanti oppure orfani” a pagina 86È possibile trovare gli indici orfani e mancanti utilizzando una UDTF (User Defined Table Function) SQLdenominata QDBTS_LISTINXSTS.

SYSPROC.SYSTS_REPRIMEINDEXÈ possibile ricreare l'indice e avviare un aggiornamento iniziale utilizzando la procedura memorizzataSYSPROC.SYSTS_REPRIMEINDEX. Utilizzare questa procedura memorizzata quando si desideraripristinare i dati dalla tabella di base.

Se i dati dalla tabella di base vengono ripristinati, il contenuto aggiornato della tabella di base non puòessere indicizzato mentre è richiamata la procedura memorizzata SYSTS_UPDATE. In questo caso, èpossibile richiamare la procedura memorizzata SYSPROC.SYSTS_REPRIMEINDEX per ricreare l'indice.

Nota: se per l'indice di ricerca testo è stato creato un dizionario di sinonimi, questo processo elimina ildizionario.

Sintassi>>-SYSPROC.SYSTS_REPRIMEINDEX( schemaIndice, nomeIndice, opzioni) -><

Il qualificativo dello schema è SYSPROC.

Parametri

schemaIndiceIdentifica lo schema dell'indice di ricerca testo. Se questo parametro è null, viene utilizzato il valoredel registro speciale CURRENT SCHEMA per il programma chiamante.

Il tipo di dati di questo parametro è VARCHAR(128).

nomeIndiceIdentifica il nome dell'indice di ricerca testo. Il nome dell'indice di ricerca testo con lo schema di

OmniFind Text Search Server 79

Page 86: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

indice identifica in modo univoco l'indice di testo completo nel sottosistema DB2. È necessariospecificare un valore che non sia null per questo parametro.

Il tipo di dati per questo parametro è VARCHAR(128).

opzioniUna stringa di caratteri che specifica le opzioni che possono essere aggiunte in futuro per questaprocedura memorizzata.

Importante: è necessario specificare un valore null per il parametro opzioni. Altrimenti, possonoessere generati degli errori. Leggere il seguente esempio per la modalità di specifica del parametroopzioni.

SQL per SYSTS_REPRIMEINDEXCREATE PROCEDURE SYSPROC.SYSTS_REPRIMEINDEX(

IN INDEXSCHEMA VARCHAR(128) CCSID 1208,IN INDEXNAME VARCHAR(128) CCSID 1208,IN OPTIONS VARCHAR(32000) CCSID 1208)

EXTERNAL NAME QDBTSLIB.DSN5RPMIDXDYNAMIC RESULT SETS 0LANGUAGE CPARAMETER STYLE SQLMODIFIES SQL DATAPROGRAM TYPE MAINCOMMIT ON RETURN NOINHERIT SPECIAL REGISTERS

Esempiov Per ricreare un indice da una qualsiasi interfaccia SQL, immettere il seguente comando da qualsiasi

interfaccia SQL:CALL SYSPROC.SYSTS_REPRIMEINDEX('schemaIndice1’,’nomeIndice1’,’’)

Riferimenti correlati:“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.

SYSTS_CLEAR_INDEXESÈ possibile rimuovere gli indici orfani con la procedura memorizzata SQLSYSPROC.SYSTS_CLEAR_INDEXES. Un altro modo implicito è richiamare direttamente SYSTS_START,che tenta di eliminare gli indici orfani automaticamente.

Autorizzazione

Gli indici orfani possono essere identificati utilizzando la UDTF (User Defined Table Function)QDBTS_LISTINXSTS.

I privilegi appartenenti all'ID autorizzazione dell'istruzione devono includere almeno uno di questiprivilegi:v L'autorizzazione *JOBCTLv L'utilizzo della funzione speciale di sicurezza QIBM_DB_SQLADM

Sintassi>>- SYSTS_CLEAR_INDEXES--(--+-----------+--)-----------------------------><

+-idserver--+’-nomealias-’

80 IBM i: OmniFind Text Search Server per DB2 per i

Page 87: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Parametri

idserver o nomealiasSpecifica l'identificativo del server per eliminare gli indici orfani. Un idserver o un nomealias server èuna stringa. Se non viene fornito alcun identificativo, il valore predefinito consiste nell'eliminazionedegli indici orfani su tutti i server. La stringa identificativo deve essere un idserver valido che esistenella colonna SERVERID oppure un nomealias server valido che esiste nella colonna ALIASNAMEdella tabella QSYS2.SYSTEXTSERVERS. Se l'identificativo può essere convertito in un valore intero,esso viene interpretato come un idserver. Se l'identificativo non può essere convertito in un valoreintero, esso viene interpretato come un nomealias server.

Il tipo di dati di questo parametro è VARCHAR(128).

Esempiov Eliminazione di tutti gli indici orfani:

Call SYSPROC.SYSTS_CLEAR_INDEXES();

v Eliminazione degli indici orfani su un server specifico con ID 50:Call SYSPROC.SYSTS_CLEAR_INDEXES(50);Call SYSPROC.SYSTS_CLEAR_INDEXES(’50’);

v Eliminazione degli indici orfani su un server specifico con nome alias “Local_server”:Call SYSPROC.SYSTS_CLEAR_INDEXES(’Local_server’);

v Eliminare implicitamente gli indici orfani:CALL SYSPROC.SYSTS_START();CALL SYSPROC.SYSTS_START(50);

Nota: quando la raccolta sul server di ricerca testo si trova in un gruppo IASP ((Independent AuxiliaryStorage Pool), il sottoprocesso che richiama la procedura memorizzata SYSTS_CLEAR_INDEXES deveessere eseguito nello spazio nomi dell'IASP (Independent ASP). Utilizzare il comando SETASPGRP(Impostazione gruppo ASP).

Per rimuovere un indice orfano da un IASP iaspXXX, è possibile utilizzare i seguenti comandi:CL:SETASPGRP(isapXXX)SQL:CALL SYSPROC.SYSTS_CLEAR_INDEXES( )

Nota: se si utilizza System i® Navigator, fare clic con il tasto destro del mouse sul nome del database perl'IASP (Independent ASP) ed eseguire gli script SQL.Concetti correlati:“Nome alias di server” a pagina 11È possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTINDEXES” a pagina 111È possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.“Ricerca di indici mancanti oppure orfani” a pagina 86È possibile trovare gli indici orfani e mancanti utilizzando una UDTF (User Defined Table Function) SQLdenominata QDBTS_LISTINXSTS.

SYSPROC.SYSTS_VALIDITYCHECKÈ possibile controllare se gli elementi di indice sono validi utilizzando la procedura memorizzata SQLSYSPROC.SYSTS_VALIDITYCHECK.

OmniFind Text Search Server 81

Page 88: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Sintassi

Questa procedura memorizzata può correggere alcuni elementi che non sono validi se viene specificato ilparametro autoFix.

>>-SYSPROC.SYSTS_VALIDITYCHECK (schemaIndice, nomeIndice, autoFix) -><

Il qualificativo dello schema è SYSPROC.

Parametri

schemaIndiceIdentifica lo schema dell'indice di ricerca testo. Se questo parametro è null, viene utilizzato il valoredel registro speciale CURRENT SCHEMA per il programma chiamante.

Il tipo di dati di questo parametro è VARCHAR(128).

nomeIndiceIdentifica il nome dell'indice di ricerca testo. Il nome dell'indice di ricerca testo con lo schema diindice identifica in modo univoco l'indice di testo completo nel sottosistema DB2. È necessariospecificare un valore che non sia null per questo parametro.

Il tipo di dati per questo parametro è VARCHAR(128).

autoFixIdentifica se è richiesta la correzione automatica. Il valore per questo parametro può essere solo 0 o 1.Il significato di questi valori è descritto nel seguente modo:

0 Viene controllata solo la validità dell'indice.

1 Viene controllata la validità dell'indice e gli elementi non validi vengono corretti.

Nota:

se sono specificati dei valori diversi da 0 o 1, vengono considerati come 0.

Il tipo di dati per questo parametro è INTEGER.

Limitazioni: se schemaIndice e nomeIndice sono entrambi specificati come *NONE, la proceduramemorizzata controlla la validità solo per le parti comuni del prodotto.

SQL for SYSTS_VALIDITYCHECKCREATE PROCEDURE SYSPROC.SYSTS_VALIDITYCHECK

(IN INDEXSCHEMA VARCHAR(128) CCSID 1208,IN INDEXNAME VARCHAR(128) CCSID 1208,IN AUTOFIX INTEGER)

EXTERNAL NAME QDBTSLIB.DSN5VALCHKDYNAMIC RESULT SETS 0LANGUAGE CPARAMETER STYLE SQLMODIFIES SQL DATAPROGRAM TYPE MAINCOMMIT ON RETURN NOINHERIT SPECIAL REGISTERS

Esempiv Per controllare la validità per un indice, immettere il seguente comando da qualsiasi interfaccia SQL:

CALL SYSPROC.SYSTS_VALIDITYCHECK('schemaIndice1’,’nomeIndice1’,0)

v Per controllare e correggere un indice automaticamente:CALL SYSPROC.SYSTS_VALIDITYCHECK('schemaIndice1’,’nomeIndice1’,1)

82 IBM i: OmniFind Text Search Server per DB2 per i

Page 89: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

QDBTSLIB.QDBTS_ROWS_STATUSGli utenti possono verificare quali documenti non sono stati indicizzati correttamente utilizzando laprocedura memorizzata SQL QDBTSLIB.QDBTS_ROWS_STATUS dopo aver richiamato SYSTS_UPDATE.

Con questa procedura memorizzata, gli utenti possono ottenere una serie di risultati che presenta idocumenti che non sono stati indicizzati correttamente. Oppure gli utenti possono scegliere di generareuna nuova tabella per memorizzare le informazioni correlate di quei documenti che non sono statiindicizzati correttamente.

Sintassi

>>-QDBTSLIB.QDBTS_ROWS_STATUS (SchemaIndice, NomeIndice, IndicatoreSerieRisultati,SchemaTabella, NomeTabella) -><

Il qualificativo dello schema è QDBTSLIB.

Parametro

Gruppo di parametri richiesto

SchemaIndiceIdentifica lo schema dell'indice di ricerca testo. È necessario specificare un valore che non sia null perquesto parametro.

Il tipo di dati di questo parametro è VARCHAR(128).

NomeIndiceIdentifica il nome dell'indice di ricerca testo. Il nome dell'indice di ricerca testo con lo schema diindice identifica in modo univoco l'indice di testo completo nel sottosistema DB2®. È necessariospecificare un valore che non sia null per questo parametro.

Il tipo di dati per questo parametro è VARCHAR(128).

Gruppo di parametri facoltativo

IndicatoreSerieRisultatiIdentifica se restituire o meno la serie di risultati direttamente all'utente.

Se IndicatoreSerieRisultati non viene trasmesso o è impostato su zero, la serie di risultati vienerestituita al richiedente.

Se IndicatoreSerieRisultati è specificato e NON è impostato su zero, non viene restituita alcuna seriedi risultati e il richiedente può effettuare una query nella tabella specificata da SchemaTabella eNomeTabella.Il tipo di dati per questo parametro è INTEGER.

SchemaTabellaIdentifica lo schema tabella della tabella. Se IndicatoreSerieRisultati è specificato e NON è zero,questo schema deve esistere.

NomeTabellaIdentifica il nome tabella generato da questa procedura memorizzata. Se IndicatoreSerieRisultati èspecificato e NON è zero, questa procedura memorizzata creerà una nuova tabella con questo nometabella.

Serie di risultati o struttura della tabella

TIME TIMESTAMP

STATUS INTEGER

TEXT_STATUSVARCHAR(50)

OmniFind Text Search Server 83

Page 90: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

MESSAGE VARCHAR(1024)

KEYCOLUMNNAMESDipende dalle colonne chiave definite nella tabella di base

TIMEÈ la data/ora in cui è stato generato l'errore o l'avvertenza. ..

STATUS, TEXT_STATUS

30 AVVERTENZAquesto record è stato indicizzato ma è stata generata un'avvertenza

40 ERRORE questo record non è stato indicizzato correttamente a causa di alcuni errori

50 ERROREIRREVERSIBILE

questo record restituisce un errore irreversibile e interrompe l'indicizzazione

MESSAGEVisualizza il codice di errore e il messaggio di errore. In base a questa colonna, gli utenti possonoapprendere il motivo per cui il record non è stato indicizzato correttamente.

KEYCOLUMNNAMESPotrebbero essere specificate più colonne chiave. In questo caso, verranno restituite tutte le colonnechiave. Ogni nome di colonna chiave avrà il prefisso ‘PK_’.

Esempiv Per verificare se l'indice presenta un documento non indicizzato correttamente:

CALL QDBTSLIB.QDBTS_ROWS_STATUS(’schemaIndice1’,’nomeIndice1’)

La serie di risultati verrà restituita direttamente al richiedente.v Per generare una nuova tabella per memorizzare il risultato:

CALL QDBTSLIB.QDBTS_ROWS_STATUS(’schemaIndice1’,’nomeIndice1’,1,’SchemaTabella’,’TabellaRisultati’)

Gli utenti, quindi, possono eseguire una query nella tabella dei risultati per ottenere ulterioriinformazioni.SELECT * FROM TABLESCHEMA.RESULTTABLE;

Si presupponga che vi siano 2 colonne (K1, K2) della tabella di base da indicizzare.Per ottenere le righe non indicizzate della tabella di base, gli utenti possono utilizzare la seguenteistruzione SQL.SELECT b.*,r.MESSAGE FROM TABLESCHEMA.RESULTTABLE r LFET JOIN BASETABLESCHEMA.BASETABLE b on r.PK_K1=b.K1 and r.PK_K2=b.K2;

Gli utenti, quindi, possono aggiornare quella riga in base al messaggio restituito e richiamatenuovamente SYSTS_UPDATE per indicizzare la nuova riga modificata.

Dizionari dei sinonimiUn dizionario dei sinonimi può migliorare la qualità dei risultati della ricerca.

È possibile aggiungere un dizionario dei sinonimi a una raccolta in qualsiasi momento.

Un dizionario dei sinonimi consiste di gruppi di sinonimi che si definiscono in un file XML. Ad esempio:<?xml version="1.0" encoding="UTF-8"?><synonymgroups version="1.0"><synonymgroup>

<synonym>Paixão</synonym><synonym>amor</synonym><synonym>flor</synonym><synonym>linda</synonym>

</synonymgroup><synonymgroup>

84 IBM i: OmniFind Text Search Server per DB2 per i

Page 91: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

<synonym>worldwide patent tracking system</synonym><synonym>wpts</synonym>

</synonymgroup></synonymgroups>

Aggiunta di un dizionario di sinonimi a una raccolta:

La specifica di gruppi di sinonimi in un dizionario di sinonimi migliora la qualità dei risultati dellaricerca testo. L'amministratore di OMNIFIND dispone has dell'autorizzazione e dei privilegi corretti pereseguire lo strumento dei sinonimi e IBM Navigator per i.v Per aggiungere un dizionario di sinonimi ad una raccolta con lo strumento dei sinonimi, attenersi alla

seguente procedura:1. Creare un file XML di sinonimi specificando i gruppi di sinonimi, come mostrato nel seguente

esempio:<?xml version="1.0" encoding="UTF-8"?><synonymgroups version="1.0"><synonymgroup>

<synonym>Paixão</synonym><synonym>amor</synonym><synonym>flor</synonym><synonym>linda</synonym>

</synonymgroup><synonymgroup>

<synonym>worldwide patent tracking system</synonym><synonym>wpts</synonym>

</synonymgroup></synonymgroups>

2. Copiare il file XML dei sinonimi in un qualsiasi indirizzario sul server di ricerca testo.3. Utilizzare lo strumento dei sinonimi per aggiungere il dizionario di sinonimi a una raccolta.

È possibile aggiungere un dizionario di sinonimi in modalità append o in modalità replace. Se siaggiunge un dizionario di sinonimi in modalità append, i nuovi sinonimi vengono aggiunti aldizionario di sinonimi esistente. Se si aggiunge un dizionario di sinonimi in modalità replace, isinonimi esistenti sono sostituiti dai nuovi sinonimi definiti per l'indice di ricerca testo.

Opzione Descrizione

Su IBM i, immettere il seguente comando(nell'interfaccia QSH):

synonymTool.sh importSynonym-synonymFile <percorso assoluto al fileXML dei sinonimi>-collectionName <nome raccolta>-replace <[true|false]>-configPath <percorso assoluto allacartella di configurazione>

Su un server Linux, immettere il seguente comando: synonymTool.sh importSynonym-synonymFile <percorso assoluto al fileXML dei sinonimi>-collectionName <nome raccolta>-replace <[true|false]>-configPath <percorso assoluto allacartella di configurazione>

Su un server Windows, immettere il seguente comando: synonymTool.bat importSynonym-synonymFile <percorso assoluto al fileXML dei sinonimi>-collectionName <nome raccolta>-replace <[true|false]>-configPath <percorso assoluto allacartella di configurazione>

Se il formato del file XML non è valido, o se il file XML è vuoto, viene restituito un codice errore.

OmniFind Text Search Server 85

Page 92: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v Per importare un dizionario di sinonimi in una raccolta da IBM Navigator per i, attenersi alla seguenteprocedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Importa dizionario di sinonimi.

Eliminazione di un dizionario di sinonimi da una raccolta:

Utilizzare lo script fornito per eliminare un dizionario di sinonimi da una raccolta.

L'amministratore di OMNIFIND deve richiamare il nome della raccolta da cui si desidera che vengaeliminato il dizionario dei sinonimi.

Eseguire lo script per eliminare il dizionario dei sinonimi da una raccolta.

Opzione Descrizione

Su IBM i, immettere il seguente comando(nell'interfaccia QSH):

removeSynonym.sh-collectionName <nome raccolta>-configPath <percorso assoluto allacartella di configurazione>

Su un server Linux, immettere il seguente comando: removeSynonym.sh-collectionName <nome raccolta>-configPath <percorso assoluto allacartella di configurazione>

Su un server Windows, immettere il seguente comando: removeSynonym.bat-collectionName <nome raccolta>-configPath <percorso assoluto allacartella di configurazione>

Se un database ha vari indici di ricerca testo, è necessario completare questa attività per ciascuna delleraccolte corrispondenti.

Ricerca di indici mancanti oppure orfaniÈ possibile trovare gli indici orfani e mancanti utilizzando una UDTF (User Defined Table Function) SQLdenominata QDBTS_LISTINXSTS.

Un indice può essere orfano se viene richiamata una procedura memorizzata SYSTS_DROP e il serverviene arrestato mentre la procedura è in esecuzione.

La funzione QDBTS_LISTINXSTS combina tutte le raccolte integrated-file-system e gli indici di catalogonello spazio nome corrente in una singola tabella. La funzione decide quale IASP ((Independent AuxiliaryStorage Pool) o *SYSBASE viene impostato. Analizza quindi l'indirizzario della raccolta di ciascun servernell'IASP (Independent ASP) o *SYSBASE.

Per *SYSBASE, viene controllato ciascun indirizzario di server sotto /QOpenSys/QIBM/ProdData/TextSearch. Per gli IASP ((Independent Auxiliary Storage Pool), viene controllato ciascun indirizzario diserver sotto /the ASP number/QOpenSys/QIBM/ProdData/TextSearch. Ad esempio, se il numero di IASP(Independent ASP) è 67, viene controllato ciascun indirizzario di server sotto /67/QOpenSys/QIBM/ProdData/TextSearch.

Per le informazioni sull'indice di catalogo, i dati vengono ottenuti dalla tabella di catalogoQSYS2.SYSTEXTINDEXES. Se si desidera controllare i server su un IASP (Independent ASP), immettere ilcomando SETASPGRP (Impostazione gruppo ASP) prima che venga richiamata questa funzione.

86 IBM i: OmniFind Text Search Server per DB2 per i

Page 93: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Se si desidera rimuovere i possibili indici orfani dall'IFS (integrated file system) dopo che sono statiidentificati, utilizzare la procedura memorizzata SYSPROC.SYSTS_REMOVE oSYSPROC.SYSTS_CLEAR_INDEXES o la “Gestione avanzata” a pagina 88 (adminTool.sh).

Termini

Indice orfanoUna raccolta (un indice) esiste nell'indirizzario IFS (integrated file system) del server ma nessunindice corrispondente è registrato nel catalogo QSYS2.SYSTEXTINDEXES.

Indice mancanteI record di indice esistono nel catalogo QSYS2.SYSTEXTINDEXES ma l'indirizzario della raccoltacorrispondente non esiste.

Sintassi

>>-QDBTS_LISTINXSTS(--null--)---><

Formato restituzione

La funzione QDBTS_LISTINXSTS restituisce le informazioni sugli indici rilevati in una tabella. Vedere ilseguente comando SQL utilizzato per creare la UDTF.

SQL per LISTINXSTS UDTFCREATE FUNCTION QDBTSLIB.QDBTS_LISTINXSTS()

RETURNS TABLE(COLLECTIONNAME VARCHAR(255),INDEXID INTEGER,INDEXSCHEMA VARCHAR(128),INDEXNAME VARCHAR(128),SERVERID INTEGER)

SPECIFIC qdbts_listinxstsSCRATCHPADNO FINAL CALLLANGUAGE C++PARAMETER STYLE DB2SQLEXTERNAL NAME ’QDBTSLIB/QDBTSSP(checkIndex)’;

Esempiv Rilevare tutti gli indici orfani:

SELECT COLLECTIONNAME, SERVERIDFROM TABLE(QDBTSLIB.QDBTS_LISTINXSTS()) AS TWHERE T.INDEXSCHEMA IS NULL AND T.INDEXNAME IS NULL

v Rilevare tutti gli indici mancanti:SELECT INDEXSCHEMA, INDEXNAME

FROM TABLE(QDBTSLIB. QDBTS_LISTINXSTS()) AS TWHERE T.COLLECTIONNAME is NULL

v Rilevare gli indici orfani in serverid = 2 sull'IASP (Independent ASP) iaspXXX:CONNECT TO iaspXXXSQL:SELECT T.COLLECTIONNAME, S.SERVERPATH

FROM TABLE(QDBTSLIB.QDBTS_LISTINXSTS())AS T LEFT OUTER JOIN QSYS2.SYSTEXTSERVERS S ON (T.SERVERID = S.SERVERID)

WHERE T.INDEXSCHMEA IS NULL AND T.INDEXNAME IS NULL AND T.SERVERID = 2

Riferimenti correlati:“SYSPROC.SYSTS_DROP” a pagina 34È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_DROP per eliminare un indice diricerca testo definito utilizzando la procedura memorizzata SYSPROC.SYSTS_CREATE.

OmniFind Text Search Server 87

Page 94: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

“SYSPROC.SYSTS_REMOVE” a pagina 78È possibile eliminare gli indici orfani con la procedura memorizzata SQL SYSPROC.SYSTS_REMOVE.“SYSTS_CLEAR_INDEXES” a pagina 80È possibile rimuovere gli indici orfani con la procedura memorizzata SQLSYSPROC.SYSTS_CLEAR_INDEXES. Un altro modo implicito è richiamare direttamente SYSTS_START,che tenta di eliminare gli indici orfani automaticamente.“Tabella di gestione QSYS2.SYSTEXTINDEXES” a pagina 111È possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.

Gestione avanzataÈ possibile utilizzare lo strumento di gestione per la gestione avanzata.

OmniFind Text Search Server per DB2 per i può essere in esecuzione quando si utilizza lo strumento digestione.

È possibile utilizzare lo strumento di gestione per eseguire le seguenti attività:v Controllare lo stato delle raccolte, come ad esempio appurare quanti documenti sono presentiv Cancellare le raccolte orfanev Notificare la versione del serverv Notificare tutte le raccolte presenti sul server di ricerca testo

Comandi

Il comando immesso per eseguire lo strumento di gestione dipende dal sistema operativo sul quale èinstallato il server di ricerca testo. Il comando dipende anche dall'attività che si desidera eseguire.

Tabella 31. Comandi per controllare lo stato delle raccolte e per cancellare le raccolte orfane

Su IBM i (nell'interfaccia QSH) Su un server Linux Su un server Windows

adminTool.sh -[delete|status]–collectionName <nome raccolta>-configPath <percorso assoluto allacartella di configurazione>

adminTool.sh -[delete|status]–collectionName <nome raccolta>-configPath <percorso assoluto allacartella di configurazione>

adminTool.bat -[delete|status]–collectionName <nome raccolta>-configPath <percorso assoluto allacartella di configurazione>

Tabella 32. Comandi per visualizzare la versione del server e per notificare tutte le raccolte

Su IBM i (nell'interfaccia QSH) Su un server Linux Su un server Windows

adminTool.sh -[version]-configPath <percorso assoluto allacartella di configurazione>

adminTool.sh -[version|reportAll]-configPath <percorso assoluto allacartella di configurazione>

adminTool.bat -[version|reportAll]-configPath <percorso assoluto allacartella di configurazione>

Opzioni

statusControlla lo stato della raccolta.

deleteSpecifica che si desidera cancellare la raccolta orfana.

versionVisualizza la versione del server.

reportAllNotifica tutte le raccolte presenti sul server di ricerca testo.

88 IBM i: OmniFind Text Search Server per DB2 per i

Page 95: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Esempio

Per determinare la versione del server, immettere il seguente comando su un server Linux:adminTool.sh –version -s <percorso assoluto al config.xml del server>

Quando si utilizza un server Windows, viene fornito uno script .bat corrispondente.

Strumento ServerInstanceÈ possibile utilizzare lo strumento ServerInstance per creare o cancellare dei server su *SYSBASE o unIASP ((Independent Auxiliary Storage Pool). È anche possibile utilizzare lo strumento ServerInstance percollegare i file da un server al server dove è installato OmniFind Text Search Server per DB2 per i.

Per impostazione predefinita, OmniFind Text Search Server per DB2 per i è installato nell'indirizzario/QOpenSys/QIBM/ProdData/TextSearch/server1.

È possibile utilizzare lo strumento ServerInstance per completare le seguenti attività prima di utilizzarloper arrestare server1 su *SYSBASE:v Creare un server su *SYSBASE o gli IASP ((Independent Auxiliary Storage Pool)v Cancellare un server su *SYSBASE o gli IASP ((Independent Auxiliary Storage Pool)v Collegare i file da un server a server1

SintassiServerInstance.sh –[create|delete|relink]–servernum <numero server>(-port <porta>)(-device <nome unità>)

Opzioni comando

createCrea un server.

deleteCancella un server.

relinkCollega i file da un server a server1.

Nota: questa opzione non è necessaria dopo che sul sistema è stata installata la PTF (programtemporary fix) SI31548. Se questa PTF è installata, il sistema elabora automaticamente l'operazione dicollegamento.

Parametri

servernumSpecifica il numero del server. Ad esempio, quando viene creato un server con il numero server 3,l'indirizzario del server è /QOpenSys/QIBM/ProdData/TextSearch/server3.

portSpecifica la porta del server. Questo parametro è necessario solo quando si crea un server.

deviceSpecifica il nome dell'IASP (Independent ASP). Questo parametro è necessario solo quandol'operazione viene completata sull'IASP (Independent ASP).

OmniFind Text Search Server 89

Page 96: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Esempiv Per creare un server con il numero server 2 e il numero porta 50000 su *SYSBASE:

ServerInstance.sh -create -servernum 2 -port 50000

v Per creare un server con il numero server 3 e il numero porta 50001 sull'IASP (Independent ASP) iasp1:ServerInstance.sh -create -servernum 3 -port 50001 -device iasp1

v Per cancellare un server con il numero server 2 su *SYSBASE:ServerInstance.sh -delete -servernum 2

v Per cancellare un server con il numero server 3 sull'IASP (Independent ASP) iasp1:ServerInstance.sh -delete -servernum 3 -device iasp1

v Per collegare i file da un server al numero server 2 su *SYSBASE:ServerInstance.sh -relink -servernum 2

v Per collegare i file da un server al numero server 3 sull'IASP (Independent ASP) asp1:ServerInstance.sh -relink -servernum 3 -device iasp1

Health CheckerHealth Checker è uno strumento di verifica dell'ambiente che può essere utilizzato per diagnosticarequalsiasi problema di configurazione di OmniFind Text Search Server per DB2 per i. Può essere utilizzatoper verificare che gli indici e i server di testo OmniFind Text Search Server per DB2 per i funzioninocorrettamente, e genererà un prospetto con avvertenze ed errori per gli eventuali potenziali problemirilevati.

Prerequisiti

L'Health Checker di OmniFind Text Search Server per DB2 per i è basato su ARE (Application RuntimeExpert per i, prodotto 5770-ARE). Pertanto, perché questo strumento possa essere eseguito, è necessarioche ARE sia installato.

Procedure di Health Checker

L'Health Checker viene richiamato tramite una serie di procedure memorizzate SQL DB2. Le procedurepossono essere richiamate tramite qualsiasi interfaccia SQL, incluso da un linguaggio di alto livello comeRPG e COBOL. Tutte le informazioni, inclusi gli errori o le avvertenze, vengono restituite tramite unaserie di risultati corrispondente.

SYSPROC.SYSTS_HC_GENERAL()

Questa procedura memorizzata viene utilizzata per controllare lo stato generale del prodotto OmniFindText Search Server per DB2 per i. La procedura controlla la configurazione del prodotto. Questo è unesempio per la restituzione di tutti i messaggi di errore e di avvertenza correlati alle informazionigenerali della configurazione di OmniFind Text Search Server per DB2 per i:> CALL SYSPROC.SYSTS_HC_GENERAL();

SYSPROC.SYSTS_HC_USR_AUTH()

Questa procedura memorizzata viene utilizzata per identificare eventuali problemi di autorizzazionedell'utente richiedente che gli impedirebbero l'utilizzo di OmniFind Text Search Server per DB2 per i perle ricerche. Questo è un esempio per la restituzione di eventuali avvertenze o errori relativi alleautorizzazioni dell'utente richiedente:> CALL SYSPROC.SYSTS_HC_USR_AUTH();

90 IBM i: OmniFind Text Search Server per DB2 per i

Page 97: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

SYSPROC.SYSTS_HC_IDX()

Questa procedura memorizzata viene utilizzata per controllare tutti gli indici di testo di OmniFind TextSearch Server per DB2 per i per assicurarsi che siano in uno stato valido. Nota: se si utilizza un gruppoIASP (Independent Auxiliary Storage Pool), viene applicata solo al gruppo IASP attualmente attivo nellavoro.

SYSSTS.HC_SVR()

Questa procedura memorizzata viene utilizzata per controllare lo stato di tutti i server di testo OmniFindText Search Server per DB2 per i locali che sono stati definiti.

Informazioni aggiuntive

Ulteriori informazioni su Health Checker di OmniFind Text Search Server per DB2 per i, compresenumerose opzioni aggiuntive delle procedure memorizzate e un'interfaccia QShell, sono disponibili indeveloperWorks OmniFind Text Search Server per DB2 per i nell'articolo ’Health Checker’.

Considerazioni sull'IASP (Independent ASP) per OmniFind Text SearchServer per DB2 per iÈ possibile gestire un indice di ricerca testo su un IASP ((Independent Auxiliary Storage Pool). l'ASP puòessere commutato tra più sistemi; ci sono pertanto delle considerazioni aggiuntive.

Un server di ricerca testo locale viene creato durante l'installazione di OMNIFIND. Per gli IASP((Independent Auxiliary Storage Pool), un server di testo locale viene creato da un amministratoreutilizzando lo strumento ServerInstance (ServerInstance.sh) dopo la creazione del gruppo di IASP((Independent Auxiliary Storage Pool).

Dopo aver creato un server di ricerca testo locale sull'IASP (Independent ASP), i dati di indice esistonosul file system dell'IASP (Independent ASP). I dati sono disponibili se l'IASP (Independent ASP) vienecommutato a un sistema differente. L'amministratore deve creare un server di ricerca testo locale una solavolta per ciascun gruppo di IASP ((Independent Auxiliary Storage Pool).

Gli indici di ricerca testo presenti sull'IASP (Independent ASP) devono essere contenuti nei server diricerca testo definiti nell'IASP (Independent ASP). Non è possibile visualizzare un server di ricerca testodefinito in un gruppo di IASP ((Independent Auxiliary Storage Pool) differente oppure nell'ASP disistema quando il lavoro è connesso all'IASP (Independent ASP).

Per creare un server di ricerca testo su un IASP (Independent ASP) denominato myiasp, attenersi allaseguente procedura:1. Attivare l'IASP (Independent ASP) con il comando CL WRKCFGSTS (Gestione stato di

configurazione) oppure utilizzando System i Navigator.2. Stabilire una connessione allo spazio nome del gruppo di IASP ((Independent Auxiliary Storage Pool)

utilizzando il comando CL SETASPGRP (Impostazione gruppo ASP).3. Utilizzare lo script ServerInstance.sh per creare un server di ricerca testo.

Qui di seguito viene riportato un comando QSH di esempio da utilizzare:/QOpenSys/QIBM/ProdData/TextSearch/ServerInstance.sh -create-servernum 2 -port nnnnn -device myiasp

Nel comando, nnnnn è un numero di porta disponibile per l'utilizzo da parte del server. Questonumero di porta deve essere disponibile per l'utilizzo su tutti i sistemi cui è possibile commutare ilgruppo di IASP ((Independent Auxiliary Storage Pool).

OmniFind Text Search Server 91

Page 98: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Dopo che un server di ricerca testo è definito per il gruppo di IASP ((Independent Auxiliary StoragePool), le procedure memorizzate di gestione possono essere utilizzate per avviare e arrestare il server diricerca testo. Le procedure memorizzate possono anche essere utilizzate per creare, eliminare e aggiornareindici di ricerca testo.

Nota: le voci dello scheduler di lavori vengono aggiunte quando l'IASP (Independent ASP) viene attivatoper gli indici con aggiornamenti pianificati che esistono nell'IASP (Independent ASP). Le voci discheduler di lavori consentono agli aggiornamenti pianificati di continuare, anche quando l'IASP(Independent ASP) viene commutato tra i sistemi.

Limitazioni di utilizzo di indici di ricerca testo e IASP ((Independent AuxiliaryStorage Pool)v Su tutti i sistemi tra cui può essere commutata la IASP (Independent ASP) deve essere installato

OmniFind Text Search Server per DB2 per i che deve essere agli stessi livelli di PTF (programtemporary fix).

v Non creare degli indici di ricerca testo su un ASP diverso da quello sul quale viene creato l'indicetabella.

v I cataloghi di sistema SYSTEXTSERVERS, SYSTEXTINDEXES, SYSTEXTDEFAULTS,SYSTEXTCOLUMNS e SYSTEXTCONFIGURATION non contengono record per gli indici e i serverdefiniti in un gruppo di ASP differente, compreso l'ASP di sistema. I cataloghi contengono delle righesolo per gli indici e i server definiti per il gruppo di IASP ((Independent Auxiliary Storage Pool) cui èconnesso il lavoro.

v Le procedure memorizzate di gestione possono essere utilizzate per eseguire le funzioni solo sugliindici e i server di ricerca testo definiti nel gruppo di IASP (Independent Auxiliary Storage Pool) cui èconnesso il lavoro.

Nota: è possibile utilizzare le istruzioni SQL CONTAINS e SCORE quando un lavoro è connesso a ungruppo di IASP ((Independent Auxiliary Storage Pool), anche se la colonna è basata su una tabellaesistente sull'ASP di sistema.

Alta disponibilitàÈ possibile implementare una soluzione ad alta disponibilità che include gli indici di ricerca testoutilizzando i comandi e le API esistenti. DB2 per IBM i ora riconosce gli indici di ricerca testo ed esegueazioni speciali durante le operazioni DB2 che interessano questi indici.

Considerazioni speciali per gli indici di ricerca testo, l'alta disponibilità e la gestione di database

v Un comando CL DLTF (Cancellazione file) o un'istruzione SQL DROP VIEW sulla vista che rappresental'indice di ricerca testo determinano la cancellazione dell'indice di ricerca testo. La cancellazione haesito negativo se viene eseguita sotto il controllo del commit.

v Il ripristino di una tabella o di un file fisico salvati con un indice di ricerca testo su una colonna nonabilita i trigger creati per l'indice di ricerca testo prima del salvataggio. Se l'indice di ricerca testo vienesuccessivamente ripristinato o creato, i trigger vengono aggiunti come parte della creazione dell'indice.Questo metodo abilita il funzionamento delle applicazioni anche se l'indice di ricerca testo creatooriginariamente sulla tabella non viene ripristinato o creato.

Riproduzione delle voci di giornale per le procedure memorizzate di gestione OmniFind

v Una riproduzione della voce di giornale (API QDBRPLAY) per la creazione della vista che rappresental'indice di ricerca testo determina la creazione dell'indice di ricerca testo.

v L'aggiunta e la rimozione dei trigger sulla tabella di base durante le chiamate della proceduraSYSTS_CREATE o SYSTS_DROP non causa la registrazione di voci di giornale.

92 IBM i: OmniFind Text Search Server per DB2 per i

Page 99: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v Una chiamata alla procedura memorizzata SYSTS_UPDATE o SYSTS_REPRIMEINDEX determina laregistrazione di una voce di giornale sulla vista dell'indice di ricerca testo. Una riproduzione di questavoce di giornale utilizzando la API QDBRPLAY determina la riproduzione della corretta chiamata diprocedura.

v Gli aggiornamenti pianificati automaticamente NON determinano delle voci di giornale per l'indice enon possono essere riprodotti.

v Una chiamata a SYSTS_ALTER determina una voce di giornale di modifica sulla vista. Unariproduzione della voce di giornale utilizzando la API QDBRPLAY determina la riproduzione dellachiamata SYSTS_ALTER.

Consigli per l'alta disponibilità

Se si desidera implementare una soluzione ad alta disponibilità, considerare i seguenti consigli:v Dopo la creazione dell'indice di ricerca testo sul sistema primario, è possibile utilizzare la API

QDBRPLAY per riprodurre la creazione sul sistema di backup.v Il sistema di backup ora contiene un indice duplicato, con degli aggiornamenti pianificati che si

verificano con la stessa frequenza del sistema primario.v Man mano che vengono riprodotte nella tabella di base dei sistemi di backup, le modifiche di record

vengono registrate nella tabella di gestione temporanea del sistema di backup.v Le chiamate a SYSTS_UPDATE, SYSTS_REPRIMEINDEX e SYSTS_ALTER sul sistema primario

determinano delle voci di giornale che possono essere riprodotte sul sistema di backup.v NON è necessario che i clienti registrino sul giornale e replichino i file IFS per gli indici di ricerca

testo.v È necessario assicurarsi che i trigger che sono stati aggiunti come parte di SYSTS_CREATE siano

abilitati per registrare le modifiche nella tabella di base. Questi trigger possono essere identificatiutilizzando il prefisso speciale "QDBTS" sul nome del trigger.

Comando CL APYJRNCHG (Applicazione modifiche giornale)

Il comando CL APYJRNCHG (Applicazione modifiche giornale) può essere utilizzato per riprodurre glieventi OmniFind. Gli utenti che desiderano utilizzare questo comando devono considerare attentamentel'ordine in cui vengono riprodotte le voci di giornale. La tabella di gestione temporanea in QSYS2 deveessere sincronizzata esattamente con la tabella di base quando un SYSTS_UPDATE viene riprodotto orichiamato.

Le modifiche di record applicate alla tabella di base NON sono registrate nella tabella di gestionetemporanea durante il processo APYJRNCHG. In alcuni casi, potrebbe essere necessario richiamare laprocedura memorizzata SYSTS_REPRIMEINDEX per ricreare l'indice dopo l'utilizzo di questo comando.Riferimenti correlati:“SYSPROC.SYSTS_REPRIMEINDEX” a pagina 79È possibile ricreare l'indice e avviare un aggiornamento iniziale utilizzando la procedura memorizzataSYSPROC.SYSTS_REPRIMEINDEX. Utilizzare questa procedura memorizzata quando si desideraripristinare i dati dalla tabella di base.

Analisi delle prestazioniL'analisi delle prestazioni di OMNIFIND include la scelta della definizione di indice corretta, la gestioneefficiente di documenti e la specifica di una ricerca selettiva.

Background

L'elaborazione OmniFind è una combinazione di attività su un lavoro ‘client' frontend e un lavoro ‘server'backend e tali lavori comunicano tra di loro. Le comunicazioni vengono eseguite utilizzando connessionisocket standard.

OmniFind Text Search Server 93

Page 100: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il lavoro client legge i record dall'appropriata tabella di database durante le creazioni e la manutenzionedegli indici. Elabora la registrazione delle modifiche della tabella, invia i documenti per l'analisi el'indicizzazione e gestisce le eventuali richieste di ricerca testo utilizzando le funzioni SQL CONTAINS oSCORE. Il lavoro client è quello in cui viene eseguita la procedura, ad esempio SYSTS_CREATE oSYSTS_UPDATE, oppure la query con CONTAINS o SCORE. Le prestazioni del lavoro client dipendonodall'elaborazione rapida delle azioni di database e dal richiamo e dal trasferimento di documenti di testoin modo efficiente al lavoro server.

Il lavoro server analizza i documenti inviati dal lavoro client, aggiorna l'indice di testo associato con leinserzioni e le cancellazioni e gestisce le richieste di ricerca nell'indice. Le prestazioni del lavoro serverdipendono dalla sua capacità di comunicare con i lavori client e di gestire i documenti in modo efficiente.Di norma, un singolo lavoro server gestisce più lavori client. Di conseguenza, il lavoro server è un lavoroa più sottoprocessi, in modo da poter gestire più client.

Un indice di testo non viene aggiornato immediatamente con le eventuali modifiche alla tabella didatabase sottostante. Le modifiche di record nella tabella vengono invece registrate utilizzando unacombinazione di un trigger di database e una tabella di gestione temporanea. La tabella di gestionetemporanea registra il tipo di aggiornamento (inserimento, aggiornamento o cancellazione) insieme aun'indicazione di quale record è stato modificato nella tabella di base. Il testo modificato non vienecatturato nella registrazione; vengono catturate solo le informazioni per identificare il record modificato.

Le modifiche di record di tabella non sono riflesse nell'indice di testo e, di conseguenza, neanche nellericerche con CONTAINS o SCORE fino alla successiva corretta esecuzione di un SYSTS_UPDATE.

Gli aggiornamenti successivi a un indice di testo dopo un aggiornamento iniziale sono dettiaggiornamenti incrementali. Questi aggiornamenti aggiungono o cancellano documenti nell'indice di testoin base alle eventuali modifiche di record eseguite nella tabella sottostante dopo l'ultimo aggiornamento.

Eventuali modifiche apportate alla tabella di base sono registrate in una tabella di gestione temporanea.In un aggiornamento incrementale, la tabella di gestione temporanea viene utilizzata per determinarequali record nella tabella di base sono stati modificati. Questi record vengono successivamente letti dallatabella di base e il loro contenuto aggiornato viene riflesso nell'indice.

L'aggiornamento iniziale è un processo più efficiente, per riga, di un aggiornamento incrementale. Latabella di base viene elaborata senza che sia necessario elaborare anche la tabella di gestione temporanea.Pertanto, una tecnica che garantisce delle buone prestazioni consiste nell'eseguire l'aggiornamento inizialesull'indice di testo dopo la compilazione iniziale della tabella sottostante. Questa tecnica riduce al minimoil tempo per compilare i documenti nell'indice.

Un'importante opzione di configurazione correlata alle prestazioni è UPDATEAUTOCOMMIT. Questovalore definisce la frequenza con la quale il lavoro client del database interrompe l'elaborazione deidocumenti. Il client attende che il lavoro server confermi che ha elaborato tutti i documenti attualmenteinviati ad esso. UPDATEAUTOCOMMIT viene utilizzato come un metodo di checkpoint per consentire aldatabase di impostare dei limiti di lavoro completato.

Se un aggiornamento di indice viene interrotto e continuato successivamente, il processo riparte dal limitedi checkpoint. Come per qualsiasi interruzione, un limite di checkpoint forza la sospensione del flusso didocumenti e l'eliminazione dei documenti nella pipeline tra il client e il server, o, in altri termini, losvuotamento della pipeline. Questo processo di avvio e arresto può avere un notevole impatto negativosulle prestazioni.

Il valore predefinito per UPDATEAUTOCOMMIT è 100, che fornisce dei frequenti checkpoint.L'impostazione di un valore più elevato di norma produce migliori prestazioni dei tempi di risposta perle chiamate SYSTS_UPDATE. Tuttavia, un valore più elevato significa un tempo di ripristino più lungo sel'aggiornamento viene annullato e riavviato.

94 IBM i: OmniFind Text Search Server per DB2 per i

Page 101: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

L'impostazione di UPDATEAUTOCOMMIT su un numero alto (o zero, che significa che non vieneeseguito alcun checkpoint) fornisce le migliori prestazioni dei tempi di risposta. Tuttavia, sel'aggiornamento iniziale viene annullato, OmniFind deve ricominciare dall'inizio della creazionedell'indice perché non è stato eseguito alcun checkpoint.

Per alcuni clienti, l'impostazione di un valore compreso tra 5000 e 20000 sembra fornire un equilibrioragionevole tra prestazioni e possibilità di ripristino da checkpoint.

Scelta della definizione di indice corretta

Un indice di testo può essere specificato con uno di questi quattro tipi di configurazione FORMAT: TEXT,HTML, XML e INSO.1. TEXT è di norma il formato più efficiente. Il testo viene letto dal record di database e inviato al server

di testo; il server lo elabora quindi direttamente.2. HTML viene utilizzato quando è noto che i documenti sono in formato HyperText Markup Language.

L'elaborazione del testo viene eseguita ignorando i valori di controllo di markup contenuti neldocumento.

3. XML viene utilizzato quando è noto che i documenti sono in formato eXtensible Markup Language. Ilcontenuto del documento viene gestito tenendo conto della sua natura strutturale, con una tracciadegli elementi, degli attributi e della gerarchia contenuti nel documento. Contrassegnare un indicecome XML consente di eseguire ricerche XML utilizzando il linguaggio di ricerca xmlxp (xpath) nellefunzioni CONTAINS e SCORE.

4. INSO viene utilizzato quando devono essere elaborati sia il contenuto che il formato del documento.In questo formato, si presume che il contenuto di ciascun documento sia più che semplice testo.Ciascun documento viene preanalizzato per determinarne il tipo, quindi viene convertito in testosemplice. I documenti INSO sono di norma documenti di elaborazione testi in rich text generati daprogrammi di elaborazione testi.

Dalla prospettiva delle prestazioni, il lavoro per indicizzare un documento aumenta quando si passa dalformato TEXT al formato INSO. Il formato INSO gestisce il testo semplice, anche se il sovraccarico èsuperiore a quello del formato TEXT poiché viene eseguita un'interpretazione. Utilizzare TEXT quando ildocumento è testo semplice nella colonna di database.

L'opzione di configurazione LANGUAGE non è strettamente richiesta poiché OmniFind determina lalingua del documento in base all'esame. Tuttavia, se la lingua dei documenti è nota, specificarlanell'opzione LANGUAGE può accelerare le prestazioni. Limita la quantità di interpretazione che ènecessario eseguire.

Gestione efficiente dei documenti

I lavori client e server comunicano le informazioni relative ai documenti utilizzando UTF (UnicodeTransformation Format). Per ottenere il documento in questo formato, il client legge il documento daldatabase, convertendo i dati risultanti in UTF-8, noto anche come CCSID 1208. Tutto il testo vieneconvertito in UTF-8 prima di essere inviato al server.

Per migliorare le prestazioni, impostare la colonna di testo di cui si sta eseguendo l'indicizzazione suCCSID 1208 per evitare questa conversione, migliorando l'efficienza del processo di gestione deidocumenti.

Utilizzo di SYSTS_REPRIMEINDEX invece di SYSTS_UPDATE per un possibilemiglioramento delle prestazioni

SYSTS_REPRIMEINDEX e SYSTS_UPDATE vengono utilizzati per aggiornare l'indice di ricerca testo.SYSTS_REPRIMEINDEX viene utilizzato per ricreare l'indice. SYSTS_UPDATE viene utilizzato per

OmniFind Text Search Server 95

Page 102: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

aggiornare l'indice con le modifiche incrementali utilizzate dopo l'ultimo aggiornamento riuscito. Inalcune istanze, SYSTS_REPRIMEINDEX potrebbe avere prestazioni migliori di SYSTS_UPDATE.

Per determinare se SYSTS_REPRIMEINDEX avrà prestazioni migliori di SYSTS_UPDATE, controllare lacolonna PENDINGCOUNT della vista Indice di ricerca testo. La colonna PENDINGCOUNT indicherà ilnumero di righe che sarà necessario modificare per il successivo processo di aggiornamento. Se l'utenteha aggiornato 10 volte lo stesso record nella tabella di base, la colonna PENDINGCOUNT verràaumentata di 10. Pertanto, se l'utente aggiorna la tabella di base frequentemente, la colonnaPENDINGCOUNT verrà aumentata. Nella maggior parte dei casi, se la colonna PENDINGCOUNT è piùgrande del conteggio totale della tabella di base, la procedura SYSTS_REPRIMEINDEX sarà la sceltamigliore da utilizzare piuttosto che SYSTS_UPDATE.

Specifica di una ricerca selettiva

Le ricerche di testo vengono eseguite utilizzando le funzioni CONTAINS o SCORE all'interno diun'istruzione di query SQL. Queste ricerche mettono a confronto i criteri di ricerca funzione con idocumenti associati alla colonna oggetto della ricerca. I record corrispondenti vengono identificati eselezionati. Il lavoro client invia la richiesta di ricerca al server e riceve una risposta che indica se se èstata trovata una corrispondenza o no.

Come per tutti i criteri di ricerca, più la ricerca è selettiva e più è efficiente. La ricerca di frasi comuni,come ad esempio ‘the' nella lingua inglese, dà come esito numerose corrispondenze e può impattarenegativamente le prestazioni. In termini pratici, è improbabile che una ricerca di questo genere forniscadelle informazioni significative. La specifica di frasi di ricerca più selettive dà come esito un numerominore di corrispondenze più significative.

Quando si utilizza CONTAINS nella clausola WHERE di un'istruzione SQL, associarla ad altri criteriutilizzando l'operatore AND ne ottimizza, di norma, le prestazioni. Ad esempio:SELECT bn, pubdate, descriptionFROM myBooksWHERE CONTAINS(description,’Alladin’) = 1AND Pubdate > '2004-01-01’

Utilizzo di CONTAINS e SCORE

Il programma di ottimizzazione può migliorare le prestazioni delle funzioni CONTAINS e SCOREcombinando internamente queste funzioni incorporate e sostituendole con una UDTF (user-defined tablefunction). La UDTF restituisce un elenco di documenti corrispondenti in un singolo risultato. Questaelaborazione UDTF in molti casi offre prestazioni migliori rispetto al processo alternativo di richiamodella funzione incorporata per ciascun record per determinare una corrispondenza.

Per abilitare il programma di ottimizzazione ad eseguire la riscrittura UDTF, la funzione CONTAINSdeve:v trovarsi nella clausola WHERE dell'istruzione SQLv essere connessa tramite "AND" ad ogni predicato aggiuntivo nella clausola WHEREv essere un confronto con il valore 1.

Ad esempio, la clausola:WHERE CONTAINS(MyDocuments, ’java performance’) = 1

può essere riscritta dal programma di ottimizzazione in formato UDTF. Tuttavia, la clausola:WHERE CONTAINS(MyDocuments, ’java performance’) = 1 OR price >100

non può essere riscritta perché CONTAINS è associata con l'operatore OR ad altri predicati.

96 IBM i: OmniFind Text Search Server per DB2 per i

Page 103: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Nota: quando una riscrittura UDTF è abilitata, il programma di ottimizzazione continua a utilizzare lamessa a confronto tra i costi per scegliere il piano ottimale.Riferimenti correlati:“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS per eseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento di ricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguire una ricerca su un indice di ricerca testo utilizzandoi criteri specificati in un argomento di ricerca. La funzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde alla query.“SYSPROC.SYSTS_UPDATE” a pagina 35È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_UPDATE per aggiornare l'indice diricerca testo per riflettere il contenuto corrente della colonna di testo.“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.

Considerazioni sulle transazioniConsiderare il proprio ambiente quando si decide con quale frequenza aggiornare gli indici di testo daidati sottostanti nelle tabelle di database.

Un fattore di primaria importanza per gli utenti di database classici è il concetto di limiti delletransazioni e di elaborazione delle transazioni. Un esempio classico è una transazione bancaria in cui deldenaro viene trasferito da un conto a un altro. Il trasferimento viene considerato una singola transazione;il trasferimento ha luogo oppure no. Il cliente non gradirebbe che il denaro venisse rimosso da un contosenza essere immediatamente visibile nell'altro conto. La banca, invece, non gradirebbe che il denarofosse visibile in entrambi i conti finché la transazione non viene finalmente completata. L'idea è che, seviene apportata una modifica, essa venga riflessa immediatamente.

Esistono molti esempi nella gestione delle informazioni dove dei ritardi sono più accettabili e perfinoprevisti. In una classica progettazione di magazzino dati, tra il contenuto del magazzino dati e i datioperativi c'è spesso una differenza di qualche ora o anche più. Questa accettazione del ritardo è basata suuna combinazione di aspettative realistiche di un magazzino dati e un desiderio di dati prevedibili ecoerenti.

Le ricerche di testo non strutturato si collocano a metà strada tra questi due limiti. In termini pratici,l'indicizzazione di documenti di testo è un processo intensivo per analizzare e scomporre il significato dibase delle parole nel documento. Le ricerche di testo consentono a una ricerca del termine ‘mice' (topi) ditrovare i documenti che contengono il termine ‘mouse' (topo). Questo risultato della ricerca è dovuto allacapacità della tecnica di indicizzazione di scomporre le parole nei loro significati di base. L'analisi vieneeseguita quando un documento viene indicizzato al fine di rendere le ricerche successive quanto piùveloci possibile.

Gli utenti di un indice di database classico prevedono che l'indice rifletta lo stato dei dati nella tabella didatabase. Questa stessa aspettativa non vale per un indice di testo. Il contenuto dell'indice di testo riflettelo stato della tabella in base alla data/ora in cui è stato eseguito l'ultimo aggiornamento(SYSTS_UPDATE).

In un ambiente molto mutevole, è improbabile che l'indice di testo rifletta mai lo stato corrente dellatabella. Tuttavia, in un ambiente più prevedibile in cui la tabella di database viene aggiornata con minore

OmniFind Text Search Server 97

Page 104: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

frequenza o in modalità batch, è possibile impostare l'esecuzione degli aggiornamenti dell'indice di testoin modo che avvenga dopo l'aggiornamento della tabella, riflettendo in modo accurato lo stato dellatabella.

È importante avere l'aspettativa appropriata per un indice di testo. Utilizzare l'opzione UPDATEFREQUENCY sull'indice di testo “SYSPROC.SYSTS_CREATE” a pagina 18 o “SYSPROC.SYSTS_UPDATE”a pagina 35 oppure richiamare in modo esplicito la procedura SYSTS_UPDATE per aggiornare ilcontenuto dell'indice di testo in modo appropriato.

Per degli ambienti più statici, come ad esempio i caricamenti di dati di massa, ha senso impostarel'aggiornamento dell'indice di testo perché venga eseguito dopo il completamento del caricamento dimassa. Per ambienti maggiormente orientati alle transazioni, il valore UPDATE FREQUENCY può essereimpostato su una durata breve oppure la procedura SYSTS_UPDATE può essere richiamatafrequentemente. È di norma un fatto che maggiore è la frequenza dell'aggiornamento e maggiore è ilcarico di lavoro cui viene sottoposta la macchina.Riferimenti correlati:“Tabella di gestione QSYS2.SYSTEXTINDEXES” a pagina 111È possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.

Utilizzo di IBM Navigator per iÈ possibile gestire i server di ricerca testo e gli indici di ricerca testo OmniFind tramite IBM Navigatorper i.1. Nella finestra IBM Navigator per i, espandere il sistema che si desidera utilizzare.2. Espandere Database.3. Espandere il database che si desidera gestire.4. Selezionare Ricerca di testo OmniFind.

98 IBM i: OmniFind Text Search Server per DB2 per i

Page 105: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Gestione dei server di ricerca testoÈ possibile avviare e arrestare i server di ricerca testo OmniFind e creare un indice di ricerca testoutilizzando IBM Systems Director Navigator per i.

Visualizzazione dello stato dei server di testo OmniFind:

1. Selezionare la cartella Server di testo nel pannello di destra.2. Visualizzare lo stato dei server di ricerca testo attualmente configurati sul sistema nel pannello di

destra.3. Selezionare Aggiorna per aggiornare l'elenco di server.

Avvio e arresto dei server di testo OmniFind:

1. Selezionare la casella davanti all'ID server selezionato nel pannello di destra.2. Selezionare dal menu Azioni:

v Avvia serverv Arresta serverv Crea un indice di ricerca testo

Creazione di un indice di ricerca testo:

OmniFind Text Search Server 99

Page 106: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Gestione degli indici di ricerca testoÈ possibile eseguire le operazioni su qualsiasi indice di ricerca testo su un sistema utilizzando IBMSystems Director Navigator per i.

Visualizzazione degli indici di testo OmniFind per un server di testo.

1. Nella finestra IBM Systems Director Navigator, espandere il sistema che si desidera utilizzare.2. Espandere Database.3. Espandere il database che si desidera gestire.4. Selezionare Ricerca di testo OmniFind.5. Selezionare Server di testo.6. Selezionare il server di testo che si desidera gestire. Gli indici per il server vengono visualizzati nel

pannello di destra.

100 IBM i: OmniFind Text Search Server per DB2 per i

Page 107: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Visualizzazione degli indici di testo OmniFind per questo sistema:

1. Selezionare Ricerca di testo OmniFind.2. Selezionare Indici di testo. Questi indici sono tutti gli indici di ricerca testo per questo sistema nella

partizione corrente.

Eseguire le operazioni su un indice di testo:

OmniFind Text Search Server 101

Page 108: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

1. Selezionare la casella per l'indice nel pannello di destra che si desidera gestire.2. Selezionare l'azione (con Seleziona azione) dalla casella nella parte superiore del pannello.

v Definizionev Aggiornav Ricaricav Cancellav Descrizione

Visualizzazione degli indici di testo OmniFind per uno schema:

1. Nella finestra IBM Systems Director Navigator, espandere il sistema che si desidera utilizzare.2. Espandere Database.3. Espandere il database che si desidera gestire.4. Espandere Schemi.5. Espandere lo schema che si desidera gestire.6. Selezionare Indici di testo OmniFind. Questi indici sono tutti gli indici di ricerca testo per questo

schema.

Visualizzazione delle creazioni di indice di ricerca testo:

È possibile visualizzare gli indici di testo creati dal database utilizzando IBM Systems Director Navigator.Questa vista è di ausilio nel determinare quando degli indici di ricerca testo diventano disponibili per leapplicazioni.

Per visualizzare gli indici di ricerca testo che vengono creati, attenersi alla seguente procedura:1. Nella finestra IBM Systems Director Navigator, espandere il sistema che si desidera utilizzare.

102 IBM i: OmniFind Text Search Server per DB2 per i

Page 109: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

2. Espandere Database.3. Espandere il database che si desidera gestire.4. Selezionare Manutenzione database.5. Selezionare Creazioni indice di testo.

Questo pannello mostra solo gli aggiornamenti di indice di ricerca testo in corso. È vuoto se non ci sonoaggiornamenti o ricreazioni di indice attualmente in esecuzione sul sistema.

Utilizzo di System i NavigatorÈ possibile gestire i server di ricerca testo e gli indici di ricerca testo OmniFind utilizzando System iNavigator.1. Nella finestra System i Navigator, espandere il sistema che si desidera utilizzare.2. Espandere Database.3. Espandere il database che si desidera gestire.4. Selezionare Ricerca di testo OmniFind.

OmniFind Text Search Server 103

Page 110: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Gestione dei server di ricerca testoÈ possibile avviare e arrestare i server di ricerca testo OmniFind e creare un indice di ricerca testoutilizzando System i Navigator.

Visualizzazione dello stato dei server di testo OmniFind:

1. Selezionare la cartella Server di testo nel pannello di destra.2. Visualizzare lo stato dei server di ricerca testo attualmente configurati sul sistema nel pannello di

destra.3. Selezionare F5 per aggiornare l'elenco di server.

104 IBM i: OmniFind Text Search Server per DB2 per i

Page 111: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Avvio e arresto dei server di testo OmniFind:

1. Selezionare l'ID server selezionato nel pannello destra.2. Fare clic con il tasto destro del mouse per visualizzare le opzioni:

v Avvia serverv Arresta serverv Crea un indice di ricerca testo

Creazione di un indice di ricerca testo:

OmniFind Text Search Server 105

Page 112: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Gestione degli indici di ricerca testoÈ possibile eseguire delle operazioni su qualsiasi indice di ricerca testo su un sistema utilizzando Systemi Navigator.

Visualizzazione degli indici di testo OmniFind per un server di testo.

1. Nella finestra System i Navigator, espandere il sistema che si desidera utilizzare.2. Espandere Database.3. Espandere il database che si desidera gestire.4. Selezionare Ricerca di testo OmniFind.5. Selezionare Server di testo.6. Selezionare il server di testo che si desidera gestire. Gli indici per il server vengono visualizzati nel

pannello di destra.

106 IBM i: OmniFind Text Search Server per DB2 per i

Page 113: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Visualizzazione degli indici di testo OmniFind per questo sistema:

1. Selezionare Ricerca di testo OmniFind.2. Selezionare Indici di testo. Gli indici visualizzati sono tutti gli indici di ricerca testo per questo

sistema nella partizione corrente.

OmniFind Text Search Server 107

Page 114: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Eseguire le operazioni su un indice di testo:

1. Selezionare un indice nel pannello di destra che si desidera gestire.2. Fare clic con il tasto destro del mouse sull'indice.3. Selezionare un'operazione:

v aggiornamentov ricreazionev cancellazionev visualizzazione della descrizionev visualizzazione della definizionev modifica della definizione

Visualizzazione degli indici di testo OmniFind per uno schema:

1. Nella finestra System i Navigator, espandere il sistema che si desidera utilizzare.2. Espandere Database.3. Espandere il database che si desidera gestire.4. Espandere Schemi.5. Espandere lo schema che si desidera gestire.6. Selezionare Indici di testo OmniFind. Questi indici sono tutti gli indici di ricerca testo per questo

schema.

108 IBM i: OmniFind Text Search Server per DB2 per i

Page 115: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Visualizzazione delle creazioni di indice di ricerca testo:

È possibile visualizzare gli indici di testo che vengono creati dal database con System i Navigator. Questavista è di ausilio nel determinare quando degli indici di ricerca testo diventano disponibili per leapplicazioni.

Per visualizzare gli indici di ricerca testo che vengono creati, attenersi alla seguente procedura:1. Nella finestra System i Navigator, espandere il sistema che si desidera utilizzare.2. Espandere Database.3. Espandere il database che si desidera gestire.4. Espandere Manutenzione database.5. Selezionare Creazioni indice di testo.

Questo pannello mostra solo gli aggiornamenti di indice di ricerca testo in corso. È vuoto se non ci sonoaggiornamenti o ricreazioni di indice attualmente in esecuzione sul sistema.

OmniFind Text Search Server 109

Page 116: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabelle di gestione della ricerca testoÈ possibile supportare i server e gli indici di ricerca testo utilizzando le tabelle di gestione in QSYS2.

Tabella di gestione QSYS2.SYSTEXTDEFAULTSÈ possibile visualizzare i parametri e i valori predefiniti nella tabella di gestioneQSYS2.SYSTEXTDEFAULTS. Questa tabella viene creata quando si installa OmniFind Text Search per DB2per i.

La seguente tabella mostra il contenuto della tabella di gestione QSYS2.SYSTEXTDEFAULTS.

Tabella 33. Contenuto della tabella di gestione QSYS2.SYSTEXTDEFAULTS

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

NAME VARCHAR(30) No Il nome di un parametro predefinitoper il database per la ricerca di testo.

VALUE VARCHAR(512) No Il valore per il parametro predefinitoper la ricerca di testo.

TYPE INTEGER No Riservato.

110 IBM i: OmniFind Text Search Server per DB2 per i

Page 117: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella di gestione QSYS2.SYSTEXTINDEXESÈ possibile visualizzare le informazioni su ciascun indice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricerca testo ha un nome, un nome schema e un nomeraccolta associato sul server di ricerca testo.

La seguente tabella mostra il contenuto della tabella di gestione QSYS2.SYSTEXTINDEXES. La chiaveunivoca per questa tabella è la colonna INDEXSCHEMA con la colonna INDEXNAME. La chiaveprimaria è la colonna INDEXID.

Tabella 34. Contenuto della tabella di gestione QSYS2.SYSTEXTINDEXES

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

INDEXID INTEGER No ID indice generato univocamente perl'indice di ricerca testo.

INDEXSCHEMA VARCHAR(128) No Il nome schema per l'indice di ricercatesto.

INDEXNAME VARCHAR(128) No Nome non qualificato dell'indice diricerca testo.

TABLESCHEMA VARCHAR(128) No Il nome schema della tabella di base.

TABLENAME VARCHAR(128) No Il nome non qualificato della tabella dibase.

TABLEIASP SMALLINT No IASP (Independent ASP) della tabella dibase.

COLLECTIONNAME VARCHAR(255) No Il nome della raccolta associata sulserver di ricerca testo.

SERVERID INTEGER No L'ID server per l'indice di ricerca testo.

TAKEOVERSERVERID INTEGER Sì Riservato per uso futuro.

TAKEOVERSERVERPULSE TIMESTAMP Sì Riservato per uso futuro.

SEARCHARGS VARBINARY(1024) Sì Riservato per uso futuro.

ALIASSCHEMA VARCHAR(128) No L'alias per lo schema della tabella dibase che è stato utilizzato nellaprocedura memorizzataSYSPROC.SYSTS_CREATE. Se nonviene utilizzato alcun alias, questovalore è identico a TABLESCHEMA.

ALIASNAME VARCHAR(128) No L'alias per il nome della tabella di baseche è stata utilizzata nella proceduramemorizzataSYSPROC.SYSTS_CREATE. Se nonviene utilizzato alcun alias, questovalore è identico a TABLENAME.

STAGINGTABLENAME VARCHAR(128) Sì Il nome della tabella di registrazioneper l'indice di ricerca testo.

EVENTTABLENAME VARCHAR(128) No Il nome della tabella evento per l'indicedi ricerca testo.

OFINDEXTABLENAME VARCHAR(128) No Il nome della tabella per l'indice diricerca testo su OmniFind Text SearchServer per DB2 per i.

OmniFind Text Search Server 111

Page 118: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 34. Contenuto della tabella di gestione QSYS2.SYSTEXTINDEXES (Continua)

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

UPDATEMINIMUM INTEGER No Il numero minimo di voci nella tabelladi registrazione prima che vengaeseguito un aggiornamentoincrementale dell'indice di ricerca testo.

UPDATEFREQUENCY VARCHAR(512) No La frequenza di aggiornamento perl'indice di ricerca testo come specificatodalla procedura memorizzataSYSPROC.SYSTS_CREATE.

UPDATEMODE INTEGER No Indica la modalità di aggiornamentodell'indice di ricerca testo. Il numerointero 0 (zero) indica l'aggiornamentoiniziale dell'indice di ricerca testo. Ilvalore 1 indica degli aggiornamentisuccessivi e incrementali.

REORGANIZATIONMODE INTEGER No Indica la modalità di riorganizzazionedell'indice di ricerca testo.

CREATETIME TIMESTAMP No La data/ora in cui l'indice di ricercatesto è stato creato.

LASTUPDATETIME TIMESTAMP Sì La data/ora in cui l'indice di ricercatesto è stato aggiornato l'ultima volta.

LASTUPDATESTATUS CHAR Sì Indica lo stato interno perl'ottimizzazione del processo diripulitura dopo un aggiornamentoiniziale o incrementale dell'indice diricerca testo. I valori tipici includono:

v (Null) indica che l'indice non è maistato aggiornato.

v 'C' indica che è stato avviato unaggiornamento iniziale. Se lamodalità di aggiornamento non èincrementale, l'aggiornamento inizialeè ancora in corso oppure non è statocompletato.

v 'N' indica che un aggiornamentoincrementale è stato completatocorrettamente.

Altri codici sono utilizzati internamentedurante l'elaborazionedell'aggiornamento. Il processo diaggiornamento utilizza questi codici perdeterminare delle azioni di recuperospecifiche che è possibile eseguire senon è possibile completarel'aggiornamento.

SCHEDULERTASKID INTEGER Sì Riservato per uso futuro.

EXPRESSIONLISTS CLOB (32 K) Sì Riservato per uso futuro.

EXPRESSIONNUMBERS VARBINARY(32) Sì Riservato per uso futuro.

USEREXITFUNCTION VARCHAR(18) Sì Riservato per uso futuro.

112 IBM i: OmniFind Text Search Server per DB2 per i

Page 119: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 34. Contenuto della tabella di gestione QSYS2.SYSTEXTINDEXES (Continua)

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

REMARKS VARCHAR(2000) Sì Commenti specificati nell'opzioneCOMMENTS del parametroopzioni-configurazione-indice dellaprocedura memorizzataSYSPROC.SYSTS_CREATE.

TABLEMBR VARCHAR(10) Sì Il membro della tabella su cui vienecreato l'indice testo. Utilizzato pertenere traccia del membro specifico dicui si sta eseguendo l'indicizzazione seil file è un file a più membri. Se ilvalore è null, il membro è il primo esolo membro della tabella.

Concetti correlati:“Nome alias di server” a pagina 11È possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.

Tabella di gestione QSYS2.SYSTEXTCOLUMNSÈ possibile visualizzare le informazioni sulle colonne di testo per un indice di ricerca testo nella tabella digestione QSYS2.SYSTEXTCOLUMNS. Ciascun indice di ricerca testo ha un ID indice, dei nomi colonna ditesto e il nome schema della tabella di base.

La seguente tabella mostra il contenuto della tabella di gestione QSYS2.SYSTEXTCOLUMNS. La chiaveprimaria per questa tabella è la colonna INDEXID con la colonna COLUMNNAME. La chiave esterna è lacolonna INDEXID.

Tabella 35. Contenuto della tabella di gestione QSYS2.SYSTEXTCOLUMNS

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

INDEXID INTEGER No L'ID indice generato univocamente perl'indice di ricerca testo.

COLUMNNAME VARCHAR(128) No Il nome non qualificato della colonna ditesto.

TABLESCHEMA VARCHAR(128) No Il nome schema della tabella di base.

TABLENAME VARCHAR(128) No Il nome non qualificato della tabella dibase.

LANGUAGE VARCHAR(5) No La lingua utilizzata dal server di ricercatesto per l'elaborazione linguistica deidocumenti di testo. Il valore predefinitoè en_US (inglese).

FUNCTIONSCHEMA VARCHAR(128) Sì Lo schema di una UDF (user-definedfunction) utilizzata da OMNIFIND peraccedere ai documenti di testo presentiin una colonna che non sono di un tipodi dati supportato o che sonomemorizzati altrove.

OmniFind Text Search Server 113

Page 120: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 35. Contenuto della tabella di gestione QSYS2.SYSTEXTCOLUMNS (Continua)

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

FUNCTIONNAME VARCHAR(18) Sì Il nome di una UDF (user-definedfunction) utilizzata da OMNIFIND peraccedere ai documenti di testo presentiin una colonna che non sono di un tipodi dati supportato o che sonomemorizzati altrove.

CCSID INTEGER No Il CCSID (coded character set identifier)utilizzato per un indice di ricerca testosu una colonna con un tipo di datibinario.

FORMAT VARCHAR(30) No Il formato dei documenti di testo nellacolonna. I valori di formato supportatisono TEXT, HTML, XML e INSO.

KEYCOLUMNCOUNT INTEGER No Il conteggio delle colonne chiave perl'indice di ricerca testo.

KEYCOLUMNNAMES VARCHAR(1200) No I nomi colonna chiave per l'indice diricerca testo.

Tabella di gestione QSYS2.SYSTEXTSERVERSÈ possibile visualizzare dove sono installati i server di ricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.

La seguente tabella mostra il contenuto della tabella di gestione QSYS2.SYSTEXTSERVERS. La chiaveunivoca per questa tabella è la colonna SERVERNAME con la colonna SERVERPORT. La chiave primariaè la colonna SERVERID.

Tabella 36. Contenuto della tabella di gestione QSYS2.SYSTEXTSERVERS

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

SERVERID INTEGER No L'ID generato univocamente per il serverdi ricerca testo.

SERVERNAME VARCHAR(128) No Il nome host o l'indirizzo IP del server diricerca testo.

SERVERADRINFO VARBINARY(3000) Sì La rappresentazione interna diSERVERNAME e SERVERPORT comedeterminata dalla procedura memorizzataSYSPROC.SYSTS_START.

SERVERPORT INTEGER No Il numero di porta per il server di ricercatesto.

SERVERPATH VARCHAR(512) No Il percorso server per il server di ricercatesto.

SERVERTYPE INTEGER No Il tipo di server per il server di ricercatesto. Il valore 0 (zero) indica un server diricerca testo IBM i. Il valore 1 indica unserver di ricerca testo Linux. Il valore 2indica un server di ricerca testo Windows.

114 IBM i: OmniFind Text Search Server per DB2 per i

Page 121: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 36. Contenuto della tabella di gestione QSYS2.SYSTEXTSERVERS (Continua)

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

SERVERAUTHTOKEN VARCHAR(256) No Il token di autenticazione per il server diricerca testo.

SERVERMASTERKEY VARCHAR(36) No La chiave server per il server di ricercatesto.

SERVERCLASS INTEGER No La classe server per il server di ricercatesto. Il valore 0 (zero) indica un server diproduzione, disponibile per la selezioneautomatica. Il valore 9 indica un server ditest, mai assegnato automaticamente.

SERVERSTATUS INTEGER No Indica se il server può essere utilizzatocome un server di ricerca testo per crearedei nuovi indici di ricerca testo. Il valorepredefinito è 0 (zero); significa che il serverpuò essere utilizzato.

ALIASNAME VARCHAR(128) Sì Il nome alias è univoco quando non è nulled è sensibile al maiuscolo/minuscolo.

Concetti correlati:“Nome alias di server” a pagina 11È possibile utilizzare un nome alias di server per assegnare un nome significativo a un server.

Tabella di gestione QSYS2.SYSTEXTCONFIGURATIONÈ possibile visualizzare i parametri di configurazione per l'indice di ricerca testo, così come sonotrasmessi dalla procedura memorizzata SYSPROC.SYSTS_CREATE, nella tabella di gestioneQSYS2.SYSTEXTCONFIGURATION.

La seguente tabella mostra il contenuto della tabella di gestione QSYS2.SYSTEXTCONFIGURATION. Lachiave primaria è la colonna INDEXID con la colonna PARAMETER. La chiave esterna è la colonnaINDEXID.

Tabella 37. Contenuto della tabella di gestione QSYS2.SYSTEXTCONFIGURATION

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

INDEXID INTEGER No ID indice generato univocamente perl'indice di ricerca testo.

PARAMETER VARCHAR(30) No I parametri specificati per l'indice diricerca testo nella proceduramemorizzata SYSPROC.SYSTS_CREATE.

VALUE VARCHAR(512) No I valori per i parametri specificati.

Riferimenti correlati:“SYSPROC.SYSTS_CREATE” a pagina 18È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_CREATE per creare un indice diricerca testo. Questa procedura memorizzata abilita una colonna di testo per l'indicizzazione di ricercatesto. L'indice di ricerca testo può essere quindi utilizzata nelle query SQL che contengono le funzioniCONTAINS o SCORE.

OmniFind Text Search Server 115

Page 122: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella di gestione QSYS2.SYSTEXTSERVERHISTORYÈ possibile visualizzare la cronologia dei server utilizzati per la procedura memorizzataSYSPROC.SYSTS_DROP visualizzando la tabella ausiliaria QSYS2.SYSTEXTSERVERHISTORY.

La seguente tabella mostra il contenuto della tabella di gestione QSYS2.SYSTEXTSERVERHISTORY. Lachiave univoca per questa tabella è la colonna INDEXID con la colonna SERVERID. La chiave esterna è lacolonna INDEXID.

Tabella 38. Contenuto della tabella di gestione QSYS2.SYSTEXTSERVERHISTORY

Nome colonna Tipo dati

Può essereimpostata sunull? Descrizione

INDEXID INTEGER No L'ID indice per un indice di ricercatesto creato.

SERVERID INTEGER No L'ID server dove un indice di ricercatesto deve essere eliminato suSYSPROC.SYSTS_DROP.

Riferimenti correlati:“SYSPROC.SYSTS_DROP” a pagina 34È possibile richiamare la procedura memorizzata SYSPROC.SYSTS_DROP per eliminare un indice diricerca testo definito utilizzando la procedura memorizzata SYSPROC.SYSTS_CREATE.

Vista dell'indice di ricerca testoQuando un indice di ricerca testo viene creato con SYSTS_CREATE, verrà creata una vista cherappresenta l'indice. Eseguire una query nella vista dell'indice di ricerca testo può essere utile all'utenteper ottenere lo stato dell'indice. Il nome della vista dell'indice di ricerca testo è uguale al nome dell'indicedi ricerca testo specificato durante la creazione dell'indice con SYSTS_CREATE.

La seguente tabella mostra il contenuto della vista dell'indice di ricerca testo.

Tabella 39. Contenuto della vista creata da SYSTS_CREATE

Nome colonna Tipo dati CCSID

Può essereimpostatasu null? Descrizione

TABLESCHEMA VARCHAR(128) 1208 No Il nome schema della tabella dibase.

TABLENAME VARCHAR(128) 1208 No Il nome non qualificato dellatabella di base.

COLUMNNAME VARCHAR(128) 1208 No Il nome non qualificato dellacolonna di testo della tabella dibase.

SERVERID INTEGER No L'ID server univocoproveniente daSYSTEXTSERVERS.

SERVERNAME VARCHAR(128) 1208 No Il nome non qualificato delserver di ricerca testo.

SERVERSTATUS VARCHAR(32) 1208 No v ‘AVVIATO’ – Il server è inesecuzione.

v ‘ARRESTATO’ – Il server èarrestato.

116 IBM i: OmniFind Text Search Server per DB2 per i

Page 123: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Tabella 39. Contenuto della vista creata da SYSTS_CREATE (Continua)

Nome colonna Tipo dati CCSID

Può essereimpostatasu null? Descrizione

STAGINGTABLENAME VARCHAR(128) 1208 No Il nome non qualificato dellatabella di registrazione perl'indice di ricerca testo.

LASTUPDATETIME TIMESTAMP Sì La data/ora in cui l'indice diricerca testo è stato aggiornatol'ultima volta.

LASTUPDATESTATUS VARCHAR(30) 1208 Sì v ’MAI AGGIORNATO’ –L'indice non è mai statoaggiornato in precedenza.

v ‘AGGIORNATO’ – L'ultimoaggiornamento è riuscito enon vi sono modifiche insospeso da effettuare.

v ‘MODIFICHE IN SOSPESO’– L'ultimo aggiornamento èriuscito ma vi sono ancoranuove modifiche daaggiornare.

v ‘NON RIUSCITO’ – L'ultimoaggiornamento non èriuscito.

UPDATEMINIMUM INTEGER No Il numero minimo di voci nellatabella di registrazione primache venga eseguito unaggiornamento incrementaledell'indice di ricerca testo.

UPDATEFREQUENCY VARCHAR(512) 1208 No La frequenza di aggiornamentoper l'indice di ricerca testocome specificato dallaprocedura memorizzataSYSPROC.SYSTS_CREATE.

PENDINGCOUNT INTEGER No Indicare il numero di righe daindicizzate nella prossimaelaborazione di aggiornamento.

Estensioni per indicizzare e ricercare dati non DB2La OmniFind Text Search per DB2 per i fornisce una serie aggiuntiva di procedure memorizzate percreare, gestire e ricercare raccolte di ricerche di testo.

Panoramica delle estensioniOmniFind Text Search Server per DB2 per i fornisce una serie aggiuntiva di procedure memorizzate percreare, gestire e ricercare raccolte di ricerche di testo. Una raccolta di ricerche di testo viene utilizzata perindicizzare i dati associati agli oggetti del sistema quali i file di spool in una coda di emissione, o i datidei file di flusso nell'IFS (integrated file system).

Una raccolta di ricerche di testo descrive una o più serie di oggetti del sistema a cui verranno indicizzatie ricercati i dati di testo a loro associati. Ad esempio, una raccolta può contenere una serie di oggetti di

OmniFind Text Search Server 117

Page 124: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

tutti i file di spool presenti nella coda di emissione QUSRSYS/QEZJOBLOG, e/o una serie di oggetti pertutti i file di flusso nell'indirizzario '/home/alice/text_data'.

La raccolta di ricerche di testo a cui si fa riferimento in questa documentazione non deve essere confusacon uno schema DB2 (a volte denominato anch'esso come raccolta), o ad una raccolta Lucene (parte dellastruttura interna di un indice di ricerca testo DB2).

Quando viene creata una raccolta di ricerche di testo, vengono creati diversi oggetti DB2 sul sistema inuno schema SQL. I seguenti oggetti verranno creati nello schema:v Cataloghi per la traccia della configurazione della raccolta.v Cataloghi per la traccia degli oggetti che sono stati indicizzati.v Procedure memorizzate SQL per gestire la raccolta ed effettuarvi le ricerche.v Un indice di ricerca testo DB2 per l'indicizzazione del testo associato.

La gestione della raccolta viene fornita con le procedure memorizzate, la maggior parte delle qualivengono create nello schema.

Una spiegazione degli altri miglioramenti di OmniFind Text Search Server per DB2 per i è reperibile in:OmniFind Text Search Server per DB2 per i enhancements.

Creazione di una raccolta di ricerche di testoQuesta procedura crea una raccolta di ricerche vuota. Verrà creato uno schema SQL sul sistema percontenere le informazioni relative alla raccolta. Lo schema conterrà gli oggetti DB2 necessari per teneretraccia degli oggetti e indicizzarli.

SYSPROC.SYSTS_CRTCOL e SYSPROC.SYSTS_CREATE_COLLECTION

Autorizzazione

SYSTS_CRTCOL e SYSTS_CREATE_COLLECTION verranno forniti con l'autorizzazione *EXECUTEconcessa come pubblica.

Queste procedure non si adatteranno ad ulteriori autorizzazioni e verranno eseguite nel profilo che lerichiama.

Per poter creare una raccolta di ricerche di testo il programma chiamante deve disporre:v Dell'autorizzazione per creare uno schema DB2v Dell'autorizzazione/capacità per creare un indice di ricerca testo

Gli oggetti DB2 creati come parte della raccolta, incluse le procedure memorizzate di gestione, vengonocreati con l'autorizzazione pubblica *EXCLUDE

Il profilo utente che crea la raccolta possiede tutti gli oggetti della raccolta. Un utente può concederel'autorizzazione alla specifica procedura ad altri utenti, per poter consentire ad un altro utente di gestire ericercare la raccolta di ricerche di testo.

Sintassi

�� SYSTS_CRTCOL ( collection_name, opzioni

, asp_device_name

) ��

118 IBM i: OmniFind Text Search Server per DB2 per i

Page 125: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Sintassi

�� SYSTS_CREATE_COLLECTION ( collection_name, opzioni

, asp_device_name

) ��

Il qualificativo dello schema è SYSPROC.

Parametri

collection_nameNone della raccolta. Questo nome identifica in modo univoco la raccolta e deve essere una stringanon null. Verrà creato uno schema del nome specificato per il nome della raccolta per contenere glioggetti DB2 associati.

Nota: Racchiudere i nomi tra virgolette se sono in conflitto con parole chiave SQL oppure OmniFindche possono essere utilizzate.

Il parametro del nome raccolta seguirà le regole SQL per i nomi schema.

Il nome della raccolta non deve essere uguale al nome di un profilo utente esistente.

Il tipo di dati di questo parametro è VARCHAR(128).

opzioniUna stringa di caratteri che specifica le varie opzioni disponibili per questa procedura memorizzata.

Il tipo di dati per questo parametro è VARCHAR(32000).

Opzioni:

informazioni-predefinite-testo caratteristiche-aggiornamento opzioni-configurazione-indice

informazioni-predefinite-testo:

LANGUAGE lingua FORMAT formato

informazioni-predefinite-testoSpecifica la lingua utilizzata quando si elaborano i documenti e il formato dei documenti di testonella colonna.

LANGUAGE linguaSpecifica la lingua utilizzata da OmniFind Text Search Server per DB2 per i per l'elaborazionelinguistica dei documenti di testo. Il valore predefinito è en_US (inglese). Se si specifica ilvalore per questo parametro come AUTO, OmniFind Text Search Server per DB2 per i provaa determinare la lingua.

Importante: se la lingua dei documenti non è l'inglese, non utilizzare il valore predefinito dien_US. Modificare il valore nella lingua dei documenti; altrimenti, l'elaborazione linguisticanon funziona come previsto.

FORMAT formatoIdentifica il formato dei documenti di testo da indicizzare, ad esempio TEXT o INSO.OmniFind Text Search Server per DB2 per i deve conoscere il formato, o il tipo di contenuto,dei documenti di testo che si intende indicizzare e sottoporre a ricerche. Se non si specifica ilparametro formato, il valore predefinito è TEXT.

OmniFind Text Search Server 119

Page 126: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il valore di formato INSO consente a OmniFind Text Search Server per DB2 per i dideterminare il formato. Se the OmniFind Text Search Server per DB2 per i non puòdeterminare il formato del documento, viene registrato un errore di documento nellaregistrazione lavoro durante l'elaborazione da parte della procedura memorizzata UPDATE.

caratteristiche-aggiornamento:

NONEUPDATE FREQUENCY < frequenza-aggiornamento >

caratteristiche-aggiornamentoSpecifica la frequenza degli aggiornamenti automatici alla raccolta di ricerche di testo. Il processodi aggiornamento per una raccolta di ricerche di testo implica l'indicizzazione dei dati di testo ela ricerca per indicizzazione negli oggetti del sistema per rilevare dati nuovi o modificati.

UPDATE FREQUENCY frequenza-aggiornamentoSpecifica quando eseguire gli aggiornamenti automatici alla raccolta di ricerche di testo. Ilvalore predefinito è NONE.

frequenza-aggiornamento (formato 1):

� � �

NONED ( * ) H ( * ) M ( * )

, , ,

0..6 0..23 0..590..6 0..23 0..59

NONESe viene specificato NONE, non vengono eseguiti ulteriori aggiornamenti dell'indice.L'aggiornamento deve essere avviato manualmente.

D Specifica il giorno o i giorni della settimana in cui viene aggiornato l'indice. Unasterisco (*) specifica tutti i giorni. 0 specifica domenica.

H Specifica l'ora o le ore in cui viene aggiornato l'indice. Un asterisco (*) specifica tuttele ore.

M Specifica il minuto o i minuti in cui viene aggiornato l'indice. Non è possibilespecificare un asterisco (*). La frequenza di aggiornamento minima è 5 minuti.

Esempio: questo esempio specifica che l'aggiornamento dell'indice viene eseguito ogni 30minuti.UPDATE FREQUENCY D(*) H(*) M(0,30)

frequenza-aggiornamento (formato 2, cronologico):

< minuto> < ora> <giornoDelMese> <meseDell'Anno> <giornoDellaSettimana>

Il formato dell'opzione frequenza-aggiornamento (cronologico) è un elenco di cinque valoriseparati da uno spazio. I cinque valori rappresentano i minuti, le ore, i giorni del mese, i mesidell'anno e i giorni della settimana, con inizio la domenica.

Se si specifica un intervallo di valori oppure un asterisco, è possibile specificare un valore dipasso utilizzando una barra (/) alla fine dell'intervallo definito.

Esempio: questo esempio specifica che l'aggiornamento dell'indice deve essere eseguito ogniquarto d'ora (0,15,30,45) nelle ore pari comprese tra le 8 e le 18:45 (8-18/2 è equivalente a8,10,12,14,16,18), dal lunedì al venerdì ogni mese dell'anno (* * 1-5).

120 IBM i: OmniFind Text Search Server per DB2 per i

Page 127: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

0,15,30,45 8-18/2 * * 1-5

minuto Specifica i minuti dell'ora in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per un intervallo di ogni 5 minuti oppure èpossibile specificare un numero intero compreso tra 0 e 59. Non è possibile ripetere ivalori. La frequenza di aggiornamento minima è 5 minuti. Il valore 1,4,8 non è valido.

frequenza-aggiornamento (minuti):

*/ 0...59

,

0...59 - 0...59/ 0...59

0...59

ora Specifica le ore del giorno in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni ora oppure è possibile specificare unnumero intero compreso tra 0 e 23. Non è possibile ripetere i valori.

frequenza-aggiornamento (ore):

*/ 0...23

,

0...23 - 0...23/ 0...23

0...23

giornoDelMeseSpecifica i giorni del mese in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni giorno oppure è possibile specificare unnumero intero compreso tra 1 e 31. Non è possibile ripetere i valori.

frequenza-aggiornamento (giornoDelMese):

*/ 1...31

,

1...31 - 1...31/ 1...31

1...31

meseDell'AnnoSpecifica i mesi dell'anno in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni mese oppure è possibile specificare unnumero intero compreso tra 1 e 12. Non è possibile ripetere i valori.

OmniFind Text Search Server 121

Page 128: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

frequenza-aggiornamento (meseDell'Anno):

*/ 1...12

,

1...12 - 1...12/ 1...12

1...12

giornoDellaSettimanaSpecifica i giorni della settimana in cui deve essere aggiornato l'indice di ricerca testo.È possibile specificare un asterisco (*) per ogni giorno oppure è possibile specificareun numero intero 0 - 7. Sia 0 sia 7 sono valori validi per indicare la domenica. Non èpossibile ripetere i valori.

frequenza-aggiornamento (giornoDellaSettimana):

*/ 0...7

,

0...7 - 0...7/ 0...7

0...7

opzioni-configurazione-indice:

INDEX CONFIGURATION ( �

,

opzione valore )

opzioni-configurazione-indiceSpecifica i valori specifici per l'indice aggiuntivi come coppie opzione-valore. È necessarioracchiudere i valori stringa tra virgolette singole. Una virgoletta singola in un valore stringa deveessere rappresentato da due virgolette singole consecutive.

CJKSEGMENTATIONSpecifica il metodo di segmentazione da utilizzare quando si indicizzano i documenti per lelingue CJK (Chinese, Japanese, Korean, ossia cinese, giapponese e coreano). I valori supportatisono MORPHOLOGICAL e NGRAM. Se il valore CJKSEGMENTATION non viene specificato,viene utilizzato il valore predefinito. Il valore predefinito viene specificato dal valoreDEFAULTNAME nella tabella QSYS2.SYSTEXTDEFAULTS.

SERVERSpecifica l'ID o il nome alias del server da utilizzare per memorizzare l'indice di ricerca testo.Se viene utilizzato un ID, il valore è un numero intero che deve esistere nella colonnaSERVERID del catalogo QSYS2.SYSTEXTSERVERS. Se viene utilizzato un nome alias, il valoreè una stringa che deve esistere nella colonna ALIASNAME del catalogoQSYS2.SYSTEXTSERVERS. Se SERVER non viene specificato, il valore predefinito consiste nelselezionare il server con il numero minore di indici di ricerca testo dai server nella tabellaQSYS2.SYSTEXTSERVERS dove il parametro SERVERSTATUS è impostato su 0 (zero); questosignifica che il server è disponibile.

UPDATEAUTOCOMMITSpecifica la frequenza con la quale viene eseguita un'operazione di commit quando sirichiamano i documenti durante un aggiornamento dell'indice. Il valore 0 (zero) significa cheun'operazione di commit viene eseguita solo alla fine dell'elaborazione.

122 IBM i: OmniFind Text Search Server per DB2 per i

Page 129: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il valore deve essere un numero intero compreso tra 0 (zero) e 2147483647. Il valorepredefinito è 100.

Suggerimento per le prestazioni: il valore di UPDATEAUTOCOMMIT può avere un impattonotevole sulle prestazioni degli aggiornamenti dell'indice. L'operazione di commit che vieneeseguita all'intervallo specificato assicura un checkpoint congruente da cui riavviarel'aggiornamento dell'indice, se viene interrotto. Tuttavia, il commit sospende anchetemporaneamente il processo di aggiornamento. L'aumento del valoreUPDATEAUTOCOMMIT (o la sua impostazione su 0) può migliorare notevolmente leprestazioni dell'aggiornamento, soprattutto l'aggiornamento iniziale. Il valore specificato devebilanciare le esigenze relative alle prestazioni e quelle relative alla recuperabilità, sulla basedella frequenza degli aggiornamenti dell'indice.

asp_device_nameQuesto parametro, se viene specificato e non è null, determina in quale lotto di memoria ausiliariaviene creata la raccolta. Questo parametro è facoltativamente disponibile per uguagliare la capacitàCREATE SCHEMA di creare gli oggetti DB2 in un'unità ASP specifica.

Se viene fornito un valore per questo parametro, il valore deve indicare un lotto di dischi nel gruppoasp principale dello spazio nomi corrente, oppure un'unità ASP di base se lo spazio nomi è solo l'ASPdi sistema.

Il tipo di dati per questo parametro è VARCHAR(10).

Esempi1. CALL SYSTS_CRTCOL(‘mycollection');

Viene creata una raccolta MYCOLLECTION.2. CALL SYSTS_CRTCOL(‘”mycollection”', “UPDATE FREQUENCY D(*) H(*) M(0)”)

Viene creata una raccolta mycollection (lettere minuscole che non includono i delimitatori).La raccolta di ricerche di testo avrà una frequenza di aggiornamento giornaliera, all'inizio di ogni ora.

3. CALL SYSTS_CRTCOL(‘ur_collection',‘UPDATE FREQUENCY NONE ‘ || ‘ LANGUAGE zh_CNINDEX CONFIGURATION( ‘ || ‘ CJKSEGMENTATION MORPHOLOGICAL) ‘, ‘23')Viene creata una raccolta UR_COLLECTION.La raccolta non ha una frequenza di aggiornamento.La lingua della raccolta è il cinese semplificato, che utilizza l'analisi linguistica del dizionario(morfologica).Lo schema SQL viene creato in ASP #23 base.Quando la raccolta di ricerche di testo viene creata, le procedure vengono create nello schema DB2per gestire la raccolta.

Per creare una raccolta da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > Omnifind > Crea raccolta.

Aggiunta di una serie di oggetti per dati di file di spoolLa procedura memorizzata per aggiungere una serie di oggetti per dati di file di spool si trova nelloschema DB2.

Nota: sono supportati solo dati SCS (SNA Character String). I file di spool contenenti altri tipi di dati nonpossono essere indicizzati e causeranno un errore a livello di documento quando vengono rilevati.L'errore verrà registrato nella registrazione del lavoro e l'indicizzazione proseguirà con il file di spoolsuccessivo. La procedura GET_OBJECTS_NOT_INDEXED può essere utilizzata per determinare quali filedi spool non sono stati inclusi nel processo di indicizzazione.

OmniFind Text Search Server 123

Page 130: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

ADD_SPLF_OBJECT_SET

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo. Verrà fornita con l'autorizzazione *EXECUTE concessa comepubblica.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

Aggiunta di una serie di oggetti file di spool:

�� ADD_SPLF_OBJECT_SET ( output_queue_libnull

, output_queue_namenull

, user_namenull

, qual_job_namenull

� , qual_job_usernull

, qual_job_numbernull

, user_datanull

, begin_timestampnull

, ending_timestampnull

�, output_set_id

) ��

Per comodità è possibile utilizzare le seguenti versioni semplificate della procedura di aggiunta di unaserie di oggetti file di spool.

Selezionare i file di spool solo in base alla coda di emissione:

�� ADD_SPLF_OBJECT_SET ( output_queue_libnull

, output_queue_namenull

) ��

Selezionare i file di spool solo in base alla coda di emissione e al nome utente:

�� ADD_SPLF_OBJECT_SET ( output_queue_libnull

, output_queue_namenull

, user_namenull

) ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

output_queue_libUn nome sistema per la libreria di code di emissione.

Un valore NULL o una stringa vuota indica che verranno incluse nell'indice le code di emissione ditutte le librerie.

Il tipo di dati per questo parametro è VARCHAR(10)

[Consultare le convenzioni relative al nome sistema]

[Consultare ulteriori limitazioni]

output_queue_nameUn nome sistema per il nome della coda di emissione.

Un valore NULL o una stringa vuota indica che verranno incluse nell'indice tutte le code diemissione.

124 IBM i: OmniFind Text Search Server per DB2 per i

Page 131: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il tipo di dati per questo parametro è VARCHAR(10)

[Consultare le convenzioni relative al nome sistema]

[Consultare ulteriori limitazioni]

user_nameUn nome sistema per l'utente che possiede il file di spool.

Un valore NULL o una stringa vuota indica che non verrà applicato alcun filtro sulla base del nomeutente.

Il tipo di dati per questo parametro è VARCHAR(10)

[Consultare le convenzioni relative al nome sistema]

[Consultare ulteriori limitazioni]

qual_job_nameUn nome sistema per la libreria di code di emissione.

Un valore NULL o una stringa vuota indica che non verrà applicato alcun filtro sulla base del nomelavoro.

Il tipo di dati per questo parametro è VARCHAR(10)

[Consultare le convenzioni relative al nome sistema]

qual_job_userUn nome sistema per il nome del profilo utente del lavoro associato al file di spool.

Un valore NULL o una stringa vuota indica che non verrà applicato alcun filtro sulla base dell'utentelavoro.

Il tipo di dati per questo parametro è VARCHAR(10)

È richiesto un valore non null, non vuoto per questo parametro se è specificatoQUALIFIED_JOB_NAME.

Se QUALIFIED_JOB_NAME è una stringa vuota o NULL, anche questo parametro deve essere unastringa vuota o NULL.

[Consultare le convenzioni relative al nome sistema]

[Consultare ulteriori limitazioni]

qual_job_numberUna stringa di sei caratteri che rappresenta il numero lavoro. (Deve essere una cifra compresa tra 0 e9)

Un valore NULL o una stringa vuota indica che non verrà applicato alcun filtro sulla base delnumero lavoro.

Il tipo di dati per questo parametro è VARCHAR(6)

È richiesto un valore non null, non vuoto per questo parametro se è specificatoQUALIFIED_JOB_NAME.

Se QUALIFIED_JOB_NAME è una stringa vuota o NULL, anche questo parametro deve essere unastringa vuota o NULL.

[Consultare le convenzioni relative al nome sistema]

[Consultare ulteriori limitazioni]

user_dataUna stringa di dieci caratteri che l'utente associa al file di spool.

OmniFind Text Search Server 125

Page 132: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Questa stringa non viene convertita in lettere maiuscole e deve corrispondere esattamente ai datiutente associati ad un file di spool per poter essere considerata una corrispondenza.

Nota: un valore 'abc' è diverso da 'ABC'

Un valore NULL o una stringa vuota indica che non verrà applicato alcun filtro sulla base dei datiutente.

Il tipo di dati per questo parametro è VARCHAR(10)

begin_timestampValore della registrazione data/ora che indica la prima data/ora di creazione che verrà inclusa nellaraccolta. I file di spool creati prima di questa registrazione data/ora non verranno indicizzati.

È possibile fornire un valore NULL per indicare che deve essere indicizzato qualsiasi file di spoolcreato prima del valore della registrazione data/ora di creazione finale. Se anche END_TIMESTAMP èNULL, non verrà applicato alcun filtro sulla base della registrazione data/ora di creazione.

Il tipo di dati per questo parametro è TIMESTAMP

end_timestampValore della registrazione data/ora che indica l'ultima data/ora di creazione che verrà inclusa nellaraccolta. I file di spool creati dopo questa registrazione data/ora non verranno indicizzati.

È possibile fornire un valore NULL per indicare che verrà indicizzato qualsiasi file di spool creatodopo BEGIN_TIMESTAMP. Se anche BEGIN_TIMESTAMP è NULL, non verrà applicato alcun filtrosulla base della registrazione data/ora di creazione.

Il tipo di dati per questo parametro è TIMESTAMP

output_set_idValore intero di emissione che restituisce l'id serie per la serie di oggetti che è stata aggiunta.

Questo valore può essere utilizzato per rimuovere la serie di oggetti in seguito.

Questo parametro è facoltativo.

Il tipo di dati per questo parametro è INTEGER

Convenzioni per la denominazione del sistema

I parametri che richiedono i nomi sistema come immissione devono essere nomi sistema validi oppure siverificherà un errore. Questi parametri verranno elaborati nello stesso modo in cui l'analizzatore comandielabora i nomi per i comandi CL. Per ulteriori informazioni sui nomi sistema, consultare Object namingrules

call nick12345.add_splf_object_set('ntl', 'justtext', 'ntl', '', '', '', '', NULL, NULL);

Le informazioni sul filtro passate alla procedura saranno una coda di emissione NTL/JUSTTEXT perl'utente NTL (convertito in lettere maiuscole)

Diversamente dai nomi SQL, per un nome sistema i delimitatori rimarranno sul nome, ma solo senecessario. call nick12345.add_splf_object_set('"ntl"', '"justtext"', '"NTL"', '', '', '', '', NULL, NULL);

Le informazioni sul filtro passate all'API saranno una coda di emissione "ntl"/"justtext" per l'utente NTL(senza virgolette per l'utente NTL)

Nota: La procedura memorizzata ha un limite di dieci caratteri sull'interfaccia e non supporta virgolettenon necessarie che causano il superamento di questo limite.

I nomi sistema non validi causeranno un errore.

126 IBM i: OmniFind Text Search Server per DB2 per i

Page 133: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Ulteriori limitazioniv I nomi generici non sono supportati. In altre parole non è possibile indicizzare tutte le code di

emissione che iniziano con MYOUT aggiungendo una serie di oggetti per MYOUT*v Il nome della libreria della coda di emissione e il nome della coda di emissione devono essere entrambi

null (o una stringa vuota)...o devono avere entrambi nomi sistema validi. Non è possibile applicare unfiltro sulla base di tutte le code di emissione nella libreria xyz, o sulla base di tutte le code di emissionedenominate 'abc' in qualsiasi libreria.

v Se vengono specificati un nome di coda di emissione ed una libreria specifici, quella coda di emissionedeve esistere nel momento in cui viene aggiunta la serie di oggetti. Non esiste una logica per evitare lacancellazione della coda di emissione in un momento successivo, ma la serie di oggetti diverrà di fatto'vuota'.

v Se sia USER_NAME che QUALIFIED_JOB_USER sono valori non null e non vuoti, devono essereuguali. Un proprietario di file di spool avrà sempre una corrispondenza con l'utente lavoro qualificatoe quindi questi valori non possono essere mai differenti quando vengono utilizzati entrambi comefiltro.

Autorizzazioni per gli oggetti indicizzati

Quando si aggiunge una serie di oggetti file di spool, considerare attentamente i requisiti diautorizzazione necessari per richiamare il testo dai file di spool. Tali autorizzazioni saranno considerateun fattore quando viene richiamata la procedura memorizzata UPDATE. Per informazioni sui requisiti diautorizzazione per gli oggetti indicizzati, consultare la documentazione relativa alla proceduramemorizzata UPDATE.

Esempi

Aggiunta di una serie di oggetti alla raccolta nick789 per tutti i file di spool presenti nella coda diemissione NTL/MYOUTQ.> call nick789.add_splf_object_set(’NTL’, ’MYOUTQ’);

Aggiunta di una serie di oggetti alla raccolta nick123 per indicizzare tutti i file di spool di proprietàdell'utente NTL.> call nick123.add_splf_object_set(’’, ’’, ’NTL’);

Aggiunta di una serie di oggetti alla raccolta default_search_col per indicizzare tutti i file di spool creatinel 2010> call default_search_col.add_splf_object_set(’’, ’’, ’’, ’’, ’’, ’’, ’’, ’2010-01-01T00:00:00’, ’2011-01-01T00:00:00’);

Aggiunta di una serie di oggetti alla raccolta default_search_col per indicizzare tutti i file di spool creatiin 2010 con dati utente 'MYAPP':> call default_search_col.add_splf_object_set(’’, ’’, ’’, ’’, ’’, ’’, ’MYAPP’, ’2010-01-01T00:00:00’, ’2011-01-01T00:00:00’);

Per aggiungere una serie di oggetti file di spool ad una raccolta da IBM Navigator per i, attenersi allaseguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Proprietà. Nel separatore Oggetto,

premere il pulsante Aggiungi code di emissione o Aggiungi file di spool.

Rimozione di una serie di oggetti per dati di file di spoolQuesta procedura memorizzata rimuoverà una serie di oggetti per i dati di file di spool da una raccoltadi ricerche di testo.

OmniFind Text Search Server 127

Page 134: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

RMV_SPLF_OBJECT_SET

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

Rimozione di una serie di oggetti di file di spool:

�� >--+-output_queue_name-+--,--+-user_name-+--,------------------->'-null -------------' '-null -----'

� >--+-qual_job_name-+--,--+-qual_job_user-+--,------------------->'-null ---------' '-null ---------'

� >--+-qual_job_number-+--,--+-user_data-+--,--------------------->'-null -----------' '-null -----'

� >--+-begin_timestamp-+--,--+-ending_timestamp-+----------------->'-null -----------' '-null ------------'

��

Per comodità è possibile utilizzare le seguenti versioni semplificate della procedura di rimozione di unaserie di oggetti file di spool.

Selezionare i file di spool solo in base alla coda di emissione:

�� >>-RMV_SPLF_OBJECT_SET--(--+-output_queue_lib-+--,-------------->'-null ------------'

� >--+-output_queue_name-+--)------------------------------------><'-null -------------'

��

Selezionare i file di spool solo in base alla coda di emissione e al nome utente:

�� >>-RMV_SPLF_OBJECT_SET--(--+-output_queue_lib-+--,-------------->'-null ------------'

� >--+-output_queue_name-+--,--+-user_name-+--)------------------><'-null -------------' '-null -----'

��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

output_queue_libUn nome sistema per la libreria di code di emissione.

Il tipo di dati per questo parametro è VARCHAR(10)

output_queue_nameUn nome sistema per il nome della coda di emissione.

128 IBM i: OmniFind Text Search Server per DB2 per i

Page 135: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il tipo di dati per questo parametro è VARCHAR(10)

user_nameUn nome sistema per l'utente che possiede il file di spool.

Il tipo di dati per questo parametro è VARCHAR(10)

qual_job_nameUn nome sistema per la libreria di code di emissione.

Il tipo di dati per questo parametro è VARCHAR(10)

qual_job_userUn nome sistema per il nome del profilo utente del lavoro associato al file di spool.

Il tipo di dati per questo parametro è VARCHAR(10)

È richiesto un valore non null, non vuoto per questo parametro se è specificatoQUALIFIED_JOB_NAME.

Se QUALIFIED_JOB_NAME è una stringa vuota o NULL, anche questo parametro deve essere unastringa vuota o NULL.

qual_job_numberUna stringa di sei caratteri che rappresenta il numero lavoro. (Deve essere una cifra compresa tra 0 e9)

Il tipo di dati per questo parametro è VARCHAR(6)

È richiesto un valore non null, non vuoto per questo parametro se è specificatoQUALIFIED_JOB_NAME.

Se QUALIFIED_JOB_NAME è una stringa vuota o NULL, anche questo parametro deve essere unastringa vuota o NULL.

user_dataUna stringa di dieci caratteri che l'utente associa al file di spool.

Questa stringa non viene convertita in lettere maiuscole e deve corrispondere esattamente ai datiutente associati ad un file di spool per poter essere considerata una corrispondenza.

Nota: un valore 'abc' è diverso da 'ABC'

Il tipo di dati per questo parametro è VARCHAR(10)

begin_timestampQuesto valore di registrazione data/ora indica la prima data/ora di creazione dei file di spoolaggiunti nella serie di oggetti.

Il tipo di dati per questo parametro è TIMESTAMP

end_timestampQuesto valore di registrazione data/ora indica l'ultima data/ora di creazione dei file di spool aggiuntinella serie di oggetti.

Il tipo di dati per questo parametro è TIMESTAMP

Nota: Per ulteriori dettagli sul significato e le limitazioni dei suddetti parametri fare riferimento alladescrizione della procedura memorizzata add_splf_object_set.

Nota sul risultato

Nel seguente caso la rimozione avrà esito negativo a causa della serie di oggetti non trovata:

>L'utente ha immesso parametri non corretti

OmniFind Text Search Server 129

Page 136: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

>Specifica che la serie di oggetti corrispondente ai parametri è stata cancellata in precedenza. L'utentericeverà un messaggio di errore che informa che la serie di oggetti non esiste con l'attributo specifico.

QUERY_OBJECT_SET() restituisce l'elenco di serie di oggetti e i parametri di immissione. L'utente puòspecificare i parametri di immissione corretti mentre richiama questa procedura memorizzata perrimuovere la serie di oggetti.

Esempi

Rimozione di una serie di oggetti nella raccolta nick789 per tutti i file di spool nella coda di emissioneNTL/MYOUTQ.> call nick789.rmv_splf_object_set(’NTL’, ’MYOUTQ’);

Rimozione di una serie di oggetti nella raccolta nick123 per tutti i file di spool di proprietà dell'utenteNTL.> call nick123.rmv_splf_object_set(’’, ’’, ’NTL’);

Rimozione di una serie di oggetti nella raccolta test_col per tutti i file di spool creati nel 2010> call test_col.rmv_splf_object_set(’’, ’’, ’’, ’’, ’’, ’’, ’’, ’2010-01-01T00:00:00’, ’2011-01-01T00:00:00’);

Aggiunta di una serie di oggetti alla raccolta default_search_col per indicizzare tutti i file di spool creatiin 2010 con dati utente 'MYAPP':> call default_search_col.add_splf_object_set(’’, ’’, ’’, ’’, ’’, ’’, ’MYAPP’, ’2010-01-01T00:00:00’, ’2011-01-01T00:00:00’);

Aggiunta di una serie di oggetti per dati di file di flussoLa procedura memorizzata per aggiungere una serie di oggetti per dati di file di flusso si trova nelloschema DB2.

ADD_IFS_STMF_OBJECT_SET

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

Questa procedura consente ad un utente di aggiungere una serie di oggetti di file di flusso (STMF)nell'IFS (Integrated File System).

Aggiunta di una serie di oggetti per dati di file di flusso (file di flusso in IFS):

�� ADD_IFS_STMF_OBJECT_SET ( stmf_expression_string, output_set_id

) ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

130 IBM i: OmniFind Text Search Server per DB2 per i

Page 137: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Parametri

stmf_expression_stringQuesto parametro contiene un percorso assoluto per un indirizzario che contiene i file che verrannoindicizzati.

Deve essere un indirizzario valido (tipo *DIR) su un file system accessibile. Gli oggetti file di flusso(tipo *STMF) in questo indirizzario verranno indicizzati. Il nome del percorso deve essere assoluto enon deve contenere espressioni regolari.

Il tipo di dati per questo parametro è VARCHAR(32000)

I file di flusso contenuti nell'indirizzario specificato vengono indicizzati.v I collegamenti simbolici NON vengono seguitiv I sottoindirizzari NON vengono elaborativ I nomi dei percorsi non devono contenere caratteri quali '*', '?', ecc., non hanno alcun significato

speciale e non deve essere utilizzato l'escape.v I nomi dei percorsi possono essere o non essere sensibili al maiuscolo/minuscolo, a seconda

dell'attributo del file system.

Quando si aggiunge la serie di oggetti verrà eseguito un controllo per verificare che non esista giàuna serie duplicata nella raccolta di ricerche di testo. Questo controllo non considera come duplicati ipercorsi equivalenti.

In altri termini, i seguenti percorsi potrebbero rappresentare tutti lo stesso indirizzario, ma verrannoconsiderati come serie di oggetti univoche, inoltre, gli oggetti in queste serie verranno indicizzati piùvolte come oggetti univoci./dir1/DIR2/dir1//DIR2///DIR1/DIR2/ (se il file system non è sensibile al maiuscolo/minuscolo)/dir1/DIR2/../DIR2ecc.

output_set_idValore intero di emissione che restituisce l'id serie per la serie di oggetti che è stata aggiunta. Questovalore può essere utilizzato per rimuovere la serie di oggetti in seguito.

Questo parametro è facoltativo.

Il tipo di dati per questo parametro è INTEGER.

Considerazioni speciali per l'elaborazione dell'aggiornamento

File system inesistenti:

Se non è possibile individuare un indirizzario durante un'operazione di aggiornamento, i file associati aquell'indirizzario non verranno rimossi dall'indice. Questo evita una reindicizzazione non necessaria deidocumenti quando un file system viene smontato e in seguito rimontato.

Se è necessario rimuovere questi file dall'indice, esistono alcune opzioni:v Eseguire la procedura memorizzata di rimozione serie di oggetti a fronte della serie di oggetti file di

flusso IFS. Questa operazione rimuoverà tutti i documenti associati alla serie di oggetti.�v Eseguire la procedura memorizzata REPRIME a fronte della raccolta. Tutti i dati verranno rimossi

dall'indice e verranno reindicizzati solo i file che possono essere individuati.v Creare l'indirizzario come indirizzario vuoto ed effettuare l'aggiornamento

Conversione CCSID

Se il FORMAT della raccolta è TEXT:

OmniFind Text Search Server 131

Page 138: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

v L'attributo CCSID del file viene utilizzato per convertire i dati estratti del file in UTF-8 perl'indicizzazione. L'attributo CCSID del file deve essere corretto per poter indicizzare il filecorrettamente.

Se il FORMAT della raccolta è INSO:v I dati del file verranno estratti dal file ed inviati al server di ricerca testo per l'elaborazione. Non

avverrà alcuna conversione di serie di caratteri e l'attributo CCSID del file verrà ignorato. Il server diricerca testo utilizzerà l'elaborazione rich text per determinare il formato e la codifica del documento.Può essere utilizzato per indicizzare file rich text (ad esempio PDF), o normali file di testo. Per alcunidocumenti in testo semplice potrebbe non essere possibile per il server di ricerca testo determinare lacodifica del documento con abbastanza sicurezza da poter indicizzare i dati. Ciò è più probabile perdocumenti molto piccoli, ma può verificarsi per documenti di maggiori dimensioni che utilizzanoanche un'ampia gamma di caratteri. Se non è possibile determinare il formato e la codifica del file, ilfile non verrà indicizzato e verrà registrato un errore documento.

Autorizzazioni per gli oggetti indicizzati

Quando si aggiunge una serie di oggetti file di flusso IFS, considerare attentamente i requisiti diautorizzazione alla lettura dei file di flusso. Le autorizzazioni adottate non vengono rispettate quando siaccede ai dati del file di flusso. Inoltre, gli aggiornamenti pianificati vengono eseguiti con il profilo utenteche possiede l'indice. Per informazioni sui requisiti di autorizzazione per gli oggetti indicizzati, consultarela documentazione relativa alla procedura memorizzata UPDATE.

ADD_IFS_STMF_OBJECT_SET_WITH_SUBDIR

La sintassi e il requisito di autorizzazione di questa procedura memorizzata sono simili a quelli diADD_IFS_STMF_OBJECT_SET. Con questa procedura memorizzata, l'utente può aggiungere alla raccoltaun indirizzario come serie di oggetti. Tutti i file e i sottoindirizzari di questo indirizzario verrannoindicizzati in modo ripetitivo.

Esempio

Aggiunta di una serie di oggetti a MYCOLLECTION per indicizzare tutti i file di flusso contenuti in unindirizzario IFS '/home/ntl/stmf':> CALL MYCOLLECTION.ADD_IFS_STMF_OBJECT_SET(’/home/ntl/stmf’);

Aggiunta di una serie di oggetti a MYCOLLECTION per indicizzare tutti i file di flusso e sottoindirizzaricontenuti in un indirizzario IFS '/home/ntl/stmf':> CALL MYCOLLECTION.ADD_IFS_STMF_OBJECT_SET_WITH_SUBDIR(’/home/ntl/stmf’);

Per aggiungere il percorso IFS ad una raccolta da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Proprietà. Nel separatore Oggetto,

premere il pulsante Aggiungi percorso IFS. Scegliere Includi sottoindirizzari per aggiungere tutti isottoindirizzari del percorso IFS specificato.

Rimozione di una serie di oggetti per dati di file di flussoLa procedura memorizzata per rimuovere una serie di oggetti per dati di file di flusso si trova nelloschema DB2®.

RMV_IFS_STMF_OBJECT_SET

132 IBM i: OmniFind Text Search Server per DB2 per i

Page 139: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

Questa procedura consente ad un utente di rimuovere una serie di oggetti di file di flusso (STMF) nell'IFS(Integrated File System).

Rimozione di una serie di oggetti per dati di file di flusso (file di flusso in IFS):

�� >>-RMV_IFS_STMF_OBJECT_SET -(--stmf_expression_string----------->< ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

stmf_expression_stringQuesto parametro è un percorso assoluto ad un indirizzario che è l'attributo della serie di oggetti.

Non è necessario che sia un indirizzario valido in un file system accessibile poiché il percorsopotrebbe essere cancellato da un utente, ma la serie di oggetti continuerebbe ad esistere. Il nome delpercorso deve essere assoluto e non deve contenere espressioni regolari.

Il tipo di dati per questo parametro è VARCHAR(32000)

Nota: Nota per il nome percorso indirizzario specificato:v I nomi dei percorsi non devono contenere caratteri quali '*', '?', ecc., non hanno alcun significato

speciale e non deve essere utilizzato l'escape.v I nomi dei percorsi possono essere o non essere sensibili al maiuscolo/minuscolo, a seconda

dell'attributo del file system.

Poiché ADD_IFS_STMF_OBJECT_SET non considera i percorsi equivalenti come serie di oggettiduplicata, l'utente deve indicare esattamente lo stesso percorso dell'ADD_IFS_STMF_OBJECT_SETaggiunta, quando si tenta di rimuovere la specifica serie di oggetti.

In altri termini, i seguenti percorsi potrebbero rappresentare tutti lo stesso indirizzario, ma verrannoconsiderati come serie di oggetti differenti./dir1/DIR2/dir1//DIR2///DIR1/DIR2/ (se il file system non è sensibile al maiuscolo/minuscolo)/dir1/DIR2/../DIR2ecc.

RMV_IFS_STMF_OBJECT_SET_WITH_SUBDIR

Questa procedura memorizzata può rimuovere una serie di oggetti che include file IFS di sottoindirizzari.Questo tipo di serie di oggetti potrebbe essere aggiunta dalla procedura

ADD_IFS_STMF_OBJECT_SET_WITH_SUBDIR.

Il requisito di autorizzazione, la sintassi ed i parametri di questa procedura memorizzata sono simili aRMV_IFS_STMF_OBJECT_SET. Se l'utente aggiunge un percorso IFS sia alla serie di oggetti con

OmniFind Text Search Server 133

Page 140: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

sottoindirizzario che alla serie di oggetti senza sottoindirizzario, l'utilizzo di questa procedura rimuoveràsolo la serie di oggetti con sottoindirizzario.

Nota sul risultato

Nel seguente caso la rimozione avrà esito negativo a causa della serie di oggetti non trovata:

>L'utente immette un percorso IFS non corretto

>Specifica che la serie di oggetti corrispondente al percorso IFS è stata cancellata in precedenza. L'utentericeverà un messaggio di errore che informa che la serie di oggetti non esiste con l'attributo specifico.

QUERY_OBJECT_SET() restituisce l'elenco di serie di oggetti e i parametri di immissione. L'utente puòspecificare i parametri di immissione corretti mentre richiama questa procedura memorizzata perrimuovere la serie di oggetti.

Esempi

Rimozione di una serie di oggetti in MYCOLLECTION il cui indirizzario IFS è '/home/ntl/stmf':> CALL MYCOLLECTION.RMV_IFS_STMF_OBJECT_SET(’/home/ntl/stmf’);

Rimozione di una serie di oggetti in MYCOLLECTION che include tutti i file di flusso e sottoindirizzaricontenuti in un indirizzario IFS '/home/ntl/stmf':> CALL MYCOLLECTION.RMV_IFS_STMF_OBJECT_SET_WITH_SUBDIR(’/home/ntl/stmf’);

Aggiunta di una serie di oggetti per file fisico di origine con piùmembriLa procedura memorizzata per rimuovere una serie di oggetti per file fisico di origine con più membri sitrova nello schema DB2®.

ADD_SRCPF_OBJECT_SET

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

Questa procedura consente ad un utente di aggiungere una serie di oggetti di file fisico di origine con piùmembri (MMPF).

Aggiunta di una serie di oggetti per file fisico di origine con più membri:>>-ADD_SRCPF_OBJECT-SET -(---SRCPF_LIB----------->>-------- SRCPF_NAME ------)-------------------------------------><

>--+------------------+--)-------------------------------------><’-,-- OUT_SETID -’

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

134 IBM i: OmniFind Text Search Server per DB2 per i

Page 141: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Parametro

SRCPF_LIBQuesto parametro indica una libreria assoluta che contiene i file fisici di origine che verrannoindicizzati.

Deve essere un nome libreria valido nel sistema. L'oggetto file fisico di origine con più membriall'interno di questa libreria verrà indicizzato. Il nome libreria deve essere assoluto e non devecontenere espressioni regolari.

Il tipo di dati per questo parametro è VARCHAR(10)

SRCPF_NAMEQuesto parametro indica un file fisico di origine assoluto che può avere uno o più membri, tutti imembri del file fisico di origine verranno indicizzati. Il nome file deve essere assoluto e non devecontenere espressioni regolari.

Nota: Se il file fisico di origine viene cancellato dopo l'aggiunta della serie di oggetti alla raccolta diricerche di testo, la successiva chiamata alla procedura memorizzata UPDATE lo rileverà ed ilrisultato della ricerca non conterrà i membri del file fisico di origine.

*ALLSRCPF

Se è stato specificato *ALLSRCPF come nome fisico di origine, significa che tutti i file fisici di originein SRCPF_LIB verranno indicizzati durante l'aggiornamento dell'indice.

Nota: Se l'utente specifica *ALLSRCPF come nome fisico di origine durante l'aggiunta di una serie dioggetti, è consentito anche l'aggiunta di un altro specifico PF sotto la stessa libreria come serie dioggetti. Questo NON porterà ad un errore di duplicato.

Il tipo di dati per questo parametro è VARCHAR(10)

OUT_SETIDValore intero di emissione che restituisce l'id serie per la serie di oggetti che è stata aggiunta. Questovalore può essere utilizzato per rimuovere la serie di oggetti in seguito.

Questo parametro è facoltativo.

Il tipo di dati per questo parametro è INTEGER.

Ulteriori limitazioniv Quando si aggiunge la serie di oggetti verrà eseguito un controllo per verificare che non esista già una

serie duplicata nella raccolta di ricerche di testo.v Durante l'aggiunta di una serie di oggetti file fisici di origine ad una raccolta di ricerche di testo,

OmniFind verifica l'esistenza del file fisico di origine. Se il file fisico origine non esiste, viene restituitoun messaggio di errore e la serie di oggetti non viene aggiunta.

v Se il file specificato non è un file fisico di origine, la chiamata alla procedura non riesce con un errore.

Autorizzazioni per gli oggetti indicizzati

Quando si aggiunge una serie di oggetti file fisici di origine con più membri, considerare attentamente irequisiti di autorizzazione alla lettura dei file. Le autorizzazioni adottate non vengono rispettate quandosi accede ai dati del file fisico di origine. Inoltre, gli aggiornamenti pianificati vengono eseguiti con ilprofilo utente che possiede l'indice. Per informazioni sui requisiti di autorizzazione per gli oggettiindicizzati, consultare la documentazione relativa alla procedura memorizzata UPDATE.

Esempi

Aggiunta di una serie di oggetti a MYCOLLECTION per indicizzare il file fisico di origine con piùmembri QCSRC nella libreria ISVSQLLP:

OmniFind Text Search Server 135

Page 142: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

> CALL MYCOLLECTION.ADD_SRCPF_OBJECT_SET(’ISVSQLLP’,’QCSRC’);

Aggiunta di una serie di oggetti a MYCOLLECTION per indicizzare il file fisico di origine con piùmembri QCSRC in una libreria ISVSQLLP, e previsione di ottenere l'id serie.> create variable setid int default 0;> CALL MYCOLLECTION.ADD_SRCPF_OBJECT_SET(’ISVSQLLP’,’QCSRC’,setid);

Aggiunta di una serie di oggetti a MYCOLLECTION per indicizzare tutti i file fisici di origine con piùmembri della libreria ISVSQLLP:> CALL MYCOLLECTION.ADD_SRCPF_OBJECT_SET(’ISVSQLLP’,’*ALLSRCPF’);

Per aggiungere una serie di oggetti file fisici di origine ad una raccolta da IBM® Navigator per i, attenersialla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività >OmniFind >

Elenco raccolte.2. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Proprietà. Nel separatore Oggetto,

selezionare il menu a discesa, scegliere Aggiungi file fisici di origine e premere AGGIUNGI.

Rimozione di una serie di oggetti per file fisico di origine con piùmembriLa procedura memorizzata per rimuovere una serie di oggetti per file fisico di origine con più membri sitrova nello schema DB2®.

RMV_SRCPF_OBJECT_SET

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

Questa procedura consente ad un utente di rimuovere una serie di oggetti di file fisico di origine con piùmembri (MMPF).

Rimozione di una serie di oggetti per file fisico di origine con più membri:>>-RMV_SRCPF_OBJECT-SET -(---SRCPF_LIB----------->>-------- SRCPF_NAME ------)-------------------------------------><

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametro

SRCPF_LIBQuesto parametro indica una libreria assoluta che contiene i file fisici di origine.

Il nome libreria deve essere assoluto e non deve contenere espressioni regolari.

Il tipo di dati per questo parametro è VARCHAR(10)

SRCPF_NAMEQuesto parametro indica un file fisico di origine assoluto che può avere uno o più membri, tutti imembri del file fisico di origine verranno indicizzati. Il nome file deve essere assoluto e non devecontenere espressioni regolari.

136 IBM i: OmniFind Text Search Server per DB2 per i

Page 143: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

*ALLSRCPF

Se è stato specificato *ALLSRCPF come nome fisico di origine, significa che verrà rimossa la serie dioggetti per tutti i file fisici di origine in SRCPF_LIB.

Il tipo di dati per questo parametro è VARCHAR(10)

Nota sul risultato

Nel seguente caso la rimozione avrà esito negativo a causa della serie di oggetti non trovata:>L’utente ha immesso SRCPF_LIB o SRCPF_NAME non corretti>Specifica che la serie di oggetti corrispondente SRCPF_LIB/SRCPF_NAME è stata cancellata in precedenza.

L'utente riceverà un messaggio di errore che informa che la serie di oggetti non esiste con l'attributospecifico.

QUERY_OBJECT_SET() restituisce l'elenco di serie di oggetti e i parametri di immissione. L'utente puòspecificare i parametri di immissione corretti mentre richiama questa procedura memorizzata perrimuovere la serie di oggetti.

Esempi

Rimozione di una serie di oggetti in MYCOLLECTION per il file fisico di origine con più membri QCSRCnella libreria ISVSQLLP:> CALL MYCOLLECTION.RMV_SRCPF_OBJECT_SET(’ISVSQLLP’,’QCSRC’);

Rimozione di una serie di oggetti in MYCOLLECTION per tutti i file fisici di origine con più membridella libreria ISVSQLLP:> CALL MYCOLLECTION.RMV_SRCPF_OBJECT_SET(’ISVSQLLP’,’*ALLSRCPF’);

Rimozione di una serie di oggettiQuesta procedura memorizzata rimuoverà una serie di oggetti da una raccolta di ricerche di testo.

REMOVE_OBJECT_SET

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� REMOVE_OBJECT_SET ( idserie ) ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

idserieL'id serie ottenuto durante l'aggiunta della serie di oggetti.

È possibile ottenere l'ID serie di oggetti anche utilizzando la procedura memorizzataQUERY_OBJECT_SET dopo che la serie di oggetti è stata aggiunta.

OmniFind Text Search Server 137

Page 144: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Il tipo di dati per questo parametro è INTEGER.

Esempi

Rimozione della serie di oggetti #1 dalla raccolta MYCOLLECTION.> CALL MYCOLLECTION.remove_object_set(1)

Per rimuovere una serie di oggetti da una raccolta da IBM Navigator per i, attenersi alla seguenteprocedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Proprietà. Nel separatore Oggetto

premere il pulsante Elimina.

Aggiornamento della raccoltaQuesta procedura memorizzata aggiorna la raccolta. Quando viene richiamata inizialmente, tutti glioggetti inclusi nelle serie di oggetti per la raccolta vengono indicizzati. Quando questa procedura vienerichiamata dopo che è stato completato un aggiornamento iniziale con esito positivo, tutti gli oggettimodificati vengono aggiornati nell'indice. La procedura non restituirà il controllo al richiedente fino alcompletamento dell'aggiornamento.

UPDATE

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� UPDATE ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

Nessuno

Requisiti di autorizzazione sugli oggetti indicizzati

Gli aggiornamenti pianificati vengono eseguiti nel profilo che possiede la raccolta di ricerche di testo.

Le chiamate alle procedure memorizzate UPDATE vengono eseguite nel profilo che richiama laprocedura.

È consigliabile che sia il proprietario dell'indice che il profilo che gestisce l'indice disponganodell'autorizzazione a leggere i dati di testo da tutti gli oggetti indicizzati nella raccolta. La mancanza diun'autorizzazione sufficiente può causare risultati imprevedibili.

L'autorizzazione adottata non verrà necessariamente rispettata per la ricerca per indicizzazione deglioggetti e l'estrazione di testo da quegli oggetti.

138 IBM i: OmniFind Text Search Server per DB2 per i

Page 145: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

I problemi di autorizzazione durante il processo di aggiornamento possono causare la non riuscitadell'aggiornamento o la mancata indicizzazione di singoli documenti.

EsempiCALL MYCOLLECTION.UPDATE;

Per aggiornare l'indice della raccolta da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Aggiorna.

Ripopolamento della raccolta di ricerche di testoLa procedura memorizzata REPRIME cancella la raccolta ed esegue un aggiornamento iniziale. Laprocedura non restituirà il controllo al richiedente fino al completamento dell'aggiornamento.

REPRIME

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� REPRIME ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

Nessuno

Considerazioni sull'autorizzazione alla ricarica per gli oggetti indicizzati

Gli aggiornamenti pianificati vengono eseguiti nel profilo che possiede la raccolta di ricerche di testo.

Le chiamate alle procedure memorizzate REPRIME vengono eseguite nel profilo che richiama laprocedura.

È consigliabile che sia il proprietario dell'indice che il profilo che gestisce l'indice disponganodell'autorizzazione a leggere i dati di testo da tutti gli oggetti indicizzati nella raccolta. La mancanza diun'autorizzazione sufficiente può causare risultati imprevedibili.

L'autorizzazione adottata non verrà necessariamente rispettata per la ricerca per indicizzazione deglioggetti e l'estrazione di testo da quegli oggetti.

I problemi di autorizzazione durante il processo di aggiornamento possono causare la non riuscitadell'aggiornamento o la mancata indicizzazione di singoli documenti.

OmniFind Text Search Server 139

Page 146: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

EsempiCALL MYCOLLECTION.REPRIME;

Per ripopolare la raccolta di ricerche di testo da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Ricarica.

Ricerca nella raccoltaQuesta procedura consente ad un utente di cercare in una raccolta di ricerche di testo gli oggetti checorrispondono ad una ricerca.

SEARCH

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� SEARCH ( search_string, search_options

, number_of_results

) ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

search_stringUn parametro stringa che contiene l'espressione della ricerca.

Nota: Questa espressione non deve essere costituita tutta da spazi o da una stringa vuota.

Per i dettagli, consultare la sezione relativa alla sintassi degli argomenti di ricerca nella guida diriferimento di OmniFind.

Il tipo di dati di questo parametro è VARCHAR(32700).

search_optionsIdentifica una costante stringa che specifica le opzioni di argomento di ricerca effettive per lafunzione.

Il tipo di dati di questo parametro è VARCHAR(32700).

search_options:

, QUERYLANGUAGE = valore , RESULTLIMIT = valore , SYNONYM = OFFON

QUERYLANGUAGESpecifica la lingua della query. Il valore può essere uno qualsiasi dei codici lingua supportati. Se

140 IBM i: OmniFind Text Search Server per DB2 per i

Page 147: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

l'opzione QUERYLANGUAGE non viene specificata, il valore predefinito è il valore di linguadell'indice di ricerca testo utilizzato quando è stata richiamata questa funzione. Se il valore dilingua dell'indice di ricerca testo è AUTO, il valore predefinito per QUERYLANGUAGE è en_US.

RESULTLIMITFornisce un indizio al programma di ottimizzazione DB2 su quante righe della serie di risultati siprevede verranno utilizzate. Il programma di utilizzazione potrebbe scegliere un piano diversoper restituire un numero inferiore di righe dalla procedura SEARCH. Il programma diottimizzazione potrebbe anche ignorare questa opzione se durante la ricerca non si ottiene ungiovamento delle prestazioni.

SYNONYMSpecifica se utilizzare un dizionario di sinonimi associato all'indice di ricerca testo. È possibileaggiungere un dizionario di sinonimi a una raccolta utilizzando lo strumento dei sinonimi. OFF èil valore predefinito.

number_of_resultsValore intero di emissione che restituisce il numero di documenti per la serie di risultati.

Il tipo di dati di questo parametro è VARCHAR(32700).

SERIE DI RISULTATI RESTITUITA

La procedura di ricerca restituisce una serie di risultati con le corrispondenze per l'espressione dellaricerca.

La serie di risultati contiene le seguenti colonne:OBJTYPE CHAR(10) CCSID 1208OBJATTR CHAR(10) CCSID 1208CONTAINING_OBJECT_LIB CHAR(10) CCSID 1208CONTAINING_OBJECT_NAME CHAR(10) CCSID 1208OBJECTINFOR XMLMODIFY_TIME TIMESTAMPSCORE DOUBLE

OBJTYPE - Il tipo di oggetto di sistema per questo risultato (*STMF, *OUTQ, ecc).

OBJATR - L'attributo dell'oggetto di sistema corrispondente all'espressione della ricerca (*SPLF, *DATA,ecc).

CONTAINING_OBJECT_LIB - La libreria per l'oggetto di sistema corrispondente.

CONTAINING_OBJECT_NAME - Il nome dell'oggetto di sistema corrispondente.

OBJECTINFOR - Un valore XML che descrive le informazioni sull'ubicazione dei dati indicizzaticorrispondenti all'espressione search_string. Un esempio di ubicazione di file di spool potrebbe essere:<Spool_File xmlns=”http://www.ibm.com/xmlns/prod/db2textsearch/obj1”>

<job_name>QPADEV000Cjob_name>QPADEV000C><job_user_name>USERAjob_user_name>USERA><spool_file_name>DSXSVRALSspool_file_name>DSXSVRALS><spool_file_number>1spool_file_number>1><job_system_name>ZD21BP1job_system_name>ZD21BP1><create_date>1081027create_date>1081027><create_time>035554create_time>035554>

</Spool_File>

Un esempio di ubicazione di file di flusso IFS potrebbe essere:<Stream_File xmlns=”http://www.ibm.com/xmlns/prod/db2textsearch/obj1”>

<file_path>/home/usera/a.txt</file_path></Spool_File>

OmniFind Text Search Server 141

Page 148: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Un esempio di ubicazione di membro file fisico potrebbe essere:<Source_Physical_File_Member xmlns=”http://www.ibm.com/xmlns/prod/db2textsearch/obj1>

<file_library>MYLIB</file_library><file_name>MYPF</file_name><member_name>member1</member_name>

</Source_Physical_File_Member>

DB2 fornisce diversi modi per convertire un valore XML in altri formati in modo che le applicazionipossano accedere ai dati. Una possibilità è creare un foglio di stile xsl ed utilizzare la funzioneXSLTRANSFORM. Un'altra possibilità è creare uno schema annotato per i valori XML ed utilizzare laprocedura XDBDECOMPXML per popolare le tabelle relazionali con i valori. Il riferimento SQL nel centroinformazioni contiene i dettagli su entrambe le funzioni.

MODIFY_TIME - Una registrazione data/ora che indica la data/l'ora dell'ultima modifica dell'oggettonella raccolta. Questa registrazione data/ora non sarà mai più recente dell'ultimo processo diaggiornamento.

SCORE - Il risultato è maggiore di 0, ma minore di 1 se i dati di testo indicizzati contengono unacorrispondenza per i criteri di ricerca specificati nell'argomento della ricerca. Maggiore è la frequenza conla quale viene trovata una corrispondenza e maggiore è il valore del risultato. Se la colonna non contieneuna corrispondenza, il risultato è 0.

La serie di risultati viene ordinata in base al punteggio, in ordine discendente.

Esempi1. call MYCOLLECTION.search('big bad wolf');2. call MYCOLLECTION.search('big bad wolf', 'QUERYLANGUAGE=en_US');

Per ricercare la raccolta da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Ricerca.2. Selezionare Ricerca.

Query delle informazioni sulla serie di oggettiQuesta procedura consente ad un utente di visualizzare l'elenco delle serie di oggetti contenute nellaraccolta.

QUERY_OBJECT_SET

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� QUERY_OBJECT_SET ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

142 IBM i: OmniFind Text Search Server per DB2 per i

Page 149: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Parametri

Nessuno

SERIE DI RISULTATI RESTITUITA

La procedura restituisce una serie di risultati che include una riga per ogni serie di oggetti:SETID INTEGERSETSTATE CHAR(10) CCSID 1208LASTREFRESHTIME TIMESTAMPADDOBJSETSQL VARCHAR(2000) CCSID 1208

SETID - Un identificativo univoco assegnato a ciascuna serie di oggetti. Questo identificativo può essereutilizzato nella procedura memorizzata remove_object_set per rimuovere la serie di oggetti dalla raccolta.

SETSTATE - Lo stato della serie di oggetti. È riservato per una futura espansione ed è sempre 'ACTIVE'.

LASTREFRESHTIME - L'ultima volta in cui la serie di oggetti è stata aggiornata per riflettere gli oggettieffettivamente presenti nel sistema.

ADDOBJSETSQL - La chiamata alla procedura memorizzata SQL che è stata utilizzata per aggiungerequesta serie di oggetti.

EsempiCall MYCOLLECTION.QUERY_OBJECT_SET;

Per eseguire la query delle informazioni sulla serie di oggetti di una raccolta da IBM Navigator per i,attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Proprietà. Fare clic sul separatore

Oggetto.

Richiamo dello stato degli oggetti indicizzatiQuesta procedura restituisce lo stato di tutti gli oggetti nella raccolta di ricerche di testo.

GET_OBJECT_STATUS

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� GET_OBJECT_STATUS ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

Nessuno

OmniFind Text Search Server 143

Page 150: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

SERIE DI RISULTATI RESTITUITA

La procedura restituisce una serie di risultati che include una riga per ogni serie di oggetti:OBJECT XMLSTATUS_TIMESTAMP TIMESTAMPSTATUS_CODE INTEGERTEXT_STATUS VARCHAR(100)

OBJECT - Le informazioni sull'ubicazione per l'oggetto nell'indice, corrisponde al formato restituito dallaricerca per la colonna OBJECTINFOR.

STATUS_TIMESTAMP - Se l'oggetto è in stato INDEXED, è la registrazione data/ora della modificadell'oggetto nell'indice. In altre parole, le modifiche apportate all'oggetto prima di questa data/ora sonoriflesse nell'indice di ricerca testo. Per tutti gli altri valori di stato, questa registrazione data/ora è ladata/ora in cui lo stato è stato registrato nell'indice. Ad esempio: se lo stato dell'oggetto è ERROR, è ladata/ora in cui è stato registrato l'errore.

STATUS_CODE - Un valore numerico che rappresenta lo stato di questo oggetto:0 = L’oggetto è stato indicizzato e non sono state rilevate modifiche all’oggetto.10 = L’oggetto attualmente sta per essere indicizzato.20 = Sono state rilevate modifiche all’oggetto.30 = L’oggetto è stato indicizzato ma è stata generata un’avvertenza durante il processo di indicizzazione.40 = Un errore ha impedito l’indicizzazione dell’oggetto.

Questi valori consentono criteri di selezione più complessi. Ad esempio, il richiamo di tutti gli oggettinon correnti nell'indice potrebbe essere espresso come STATUS_CODE > 0.

Nota: Lo stato degli oggetti che stanno per essere aggiornati, o che stavano per essere aggiornati quandoè stato annullato un aggiornamento, potrebbe essere diverso dalla realtà. È possibile che un oggettoriporti che vi siano modifiche in sospeso quando di fatto il testo da indicizzare è stato già inviato alserver. È inoltre possibile per lo stato di un documento essere 'INDEXED', ma l'oggetto potrebbe nonessere ricercabile fino ad un futuro punto di commit nel processo di aggiornamento. Lo STATUS_CODErispecchierà la realtà quando la procedura memorizzata di aggiornamento sarà stata completata.

La serie di risultati viene ordinata in base al codice di stato (ordine discendente).

TEXT_STATUS - La versione del testo del codice di stato:0 = INDEXED10 = INDEXING20 = CHANGES PENDING30 = WARNING40 = ERROR

EsempiCall MYCOLLECTION.GET_OBJECT_STATUS;

Richiamo di oggetti non indicizzatiQuesta procedura restituisce gli oggetti che non sono indicizzati nella raccolta di ricerche di testo.

GET_OBJECTS_NOT_INDEXED

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

144 IBM i: OmniFind Text Search Server per DB2 per i

Page 151: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� GET_OBJECTS_NOT_INDEXED ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

Nessuno

SERIE DI RISULTATI RESTITUITA

La procedura restituisce una serie di risultati che include una riga per ogni serie di oggetti:OBJECT XMLSTATUS_TIMESTAMP TIMESTAMPSTATUS_CODE INTEGERTEXT_STATUS VARCHAR(100)

OBJECT - Le informazioni sull'ubicazione per l'oggetto nell'indice, corrisponde al formato restituito dallaricerca per la colonna OBJECTINFOR.

STATUS_TIMESTAMP - Se l'oggetto è in stato INDEXED, è la registrazione data/ora della modificadell'oggetto nell'indice. In altre parole, le modifiche apportate all'oggetto prima di questa data/ora sonoriflesse nell'indice di ricerca testo. Per tutti gli altri valori di stato, questa registrazione data/ora è ladata/ora in cui lo stato è stato registrato nell'indice. Ad esempio: se lo stato dell'oggetto è ERROR, è ladata/ora in cui è stato registrato l'errore.

STATUS_CODE - Un valore numerico che rappresenta lo stato di questo oggetto:0 = L’oggetto è stato indicizzato e non sono state rilevate modifiche all’oggetto.10 = L’oggetto attualmente sta per essere indicizzato.20 = Sono state rilevate modifiche all’oggetto.30 = L’oggetto è stato indicizzato ma è stata generata un’avvertenza durante il processo di indicizzazione.40 = Un errore ha impedito l’indicizzazione dell’oggetto.

Questi valori consentono criteri di selezione più complessi. Ad esempio, il richiamo di tutti gli oggettinon correnti nell'indice potrebbe essere espresso come STATUS_CODE > 0.

Nota: Lo stato degli oggetti che stanno per essere aggiornati, o che stavano per essere aggiornati quandoè stato annullato un aggiornamento, potrebbe essere diverso dalla realtà. È possibile che un oggettoriporti che vi siano modifiche in sospeso quando di fatto il testo da indicizzare è stato già inviato alserver. È inoltre possibile per lo stato di un documento essere 'INDEXED', ma l'oggetto potrebbe nonessere ricercabile fino ad un futuro punto di commit nel processo di aggiornamento. Lo STATUS_CODErispecchierà la realtà quando la procedura memorizzata di aggiornamento sarà stata completata.

La serie di risultati viene ordinata in base al codice di stato (ordine discendente).

TEXT_STATUS - La versione del testo del codice di stato:0 = INDEXED10 = INDEXING20 = CHANGES PENDING30 = WARNING ed ERROR40 = WARNING ed ERROR

OmniFind Text Search Server 145

Page 152: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

EsempiCall MYCOLLECTION.GET_OBJECTS_NOT_INDEXED;

Richiamo dello stato della raccoltaQuesta procedura restituisce lo stato della raccolta di ricerche di testo.

STATUS

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi

�� STATUS ��

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

Nessuno

SERIE DI RISULTATI RESTITUITA

La procedura restituisce una serie di risultati che include una riga per ogni serie di oggetti:SERVERID INTEGERSERVERNAME VARCHAR(128)SERVERSTATUS VARCHAR(32)LASTUPDATETIME TIMESTAMPLASTUPDATESTATUS VARCHAR(30)UPDATEFREQUENCY VARCHAR(512)

SERVERID - L'ID server dell'indice di ricerca testo.

SERVERNAME - Il nome host o l'indirizzo IP del server di ricerca testo.

SERVERSTATUS - Indica se il server può essere utilizzato come server di ricerca testo per creare nuoviindici di ricerca testo. Il valore predefinito è 0 (zero); significa che il server può essere utilizzato.

LASTUPDATETIME - La data/ora dell'ultimo aggiornamento dell'indice di ricerca testo.

LASTUPDATESTATUS - Indica lo stato dell'ultimo aggiornamento dell'indice di ricerca testo.MAI AGGIORNATO - L’indice di ricerca testo non è mai stato aggiornato prima.AGGIORNATO - L’indice della ricerca di testo è aggiornato.MODIFICHE IN SOSPESO - Vi sono modifiche in sospeso. L’utente deve aggiornare l’indice per rendere aggiornato l’indice di ricerca testo.NON RIUSCITO - L’ultimo aggiornamento dell’indice di ricerca testo non è riuscito.

UPDATEFREQUENCY - Quando eseguire gli aggiornamenti automatici all'indice di ricerca testo.

146 IBM i: OmniFind Text Search Server per DB2 per i

Page 153: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

EsempiCall MYCOLLECTION.STATUS;

Per richiamare lo stato della raccolta da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.

Eliminazione di una raccolta di ricerche di testoQuesta procedura rimuove una raccolta di ricerche di testo dal sistema.

SYSPROC.SYSTS_DRPCOL e SYSPROC.SYSTS_DROP_COLLECTION

Autorizzazione

Le procedure memorizzate SYSPROC.SYSTS_DRPCOL e SYSPROC.SYSTS_DROP_COLLECTION vengonofornite con l'autorizzazione *EXECUTE pubblica.

Non viene adottata alcuna autorizzazione e la procedura viene eseguita nel profilo dell'utente.

L'utente deve disporre dell'autorizzazione per eliminare lo schema SQL (inclusi tutti gli oggetti contenuti)per poter eliminare correttamente la raccolta.

Sintassi

�� SYSTS_DRPCOL ( collection_name ) ��

Sintassi

�� SYSTS_DROP_COLLECTION ( collection_name ) ��

Il qualificativo dello schema è SYSPROC.

Parametri

collection_nameIl nome della raccolta fornito nella procedura memorizzata SYSTS_CREATE_COLLECTION.

Il tipo di dati per questo parametro è VARCHARE(128).

Esempi

CALL SYSPROC.SYTS_DRPCOL(‘”MYCOLLECTION”')

Altri esempi che utilizzano le procedure della raccolta di ricerche di testo> CALL SYSPROC.SYSTS_CREATE_COLLECTION(’MYCOLLECTION’, ’FORMAT TEXT’);

Per impostazione predefinita, vengono sempre richiamate le procedure memorizzate associate alla nuova raccolta> SET SCHEMA MYCOLLECTION> SET PATH MYCOLLECTION

Aggiunta di una serie di oggetti per tutti i file di spool posseduti dall’utente ZOOKEEPER> CALL.ADD_SPLF_OBJECT_SET(’’, ’’, ’ZOOKEEPER’);

Aggiunta di una serie di oggetti per tutti i file di spool creati il 14/06/2010> CALL ADD_SPLF_OBJECT_SET(’’, ’’, ’’, ’’, ’’, ’’, ’’, ’2010-06-14T00:00:00’, ’2010-06-15T00:00:00’);

OmniFind Text Search Server 147

Page 154: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Aggiunta di una serie di oggetti per tutti i file di flusso nell’indirizzario IFS ’/home/zookeeper’> CALL ADD_IFS_STMF_OBJECT_SET(’/home/zookeeper’);

Aggiornamento della raccolta> CALL UPDATE;

Ricerca di ’Leoni AND tigri AND orsi’> CALL SEARCH(’leoni AND tigri AND orsi’);

Concessione dell’autorizzazione ad un altro utente (SEARCHER)> GRANT EXECUTE ON SPECIFIC PROCEDURE SEARCH1 TO SEARCHER

Eliminazione della raccolta> CALL SYSPROC.SYSTS_DROP_COLLECTION(’MYCOLLECTION’)

Per eliminare una raccolta di ricerche di testo da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Elenco raccolte.3. Fare clic con il tasto destro del mouse sulla raccolta e selezionare Cancella.

Modifica di una raccolta di ricerche di testoÈ possibile richiamare questa procedura memorizzata per modificare gli attributi di una raccolta creata daSYSPROC.SYSTS_CREATE_COLLECTION. Vengono modificati solo gli attributi specificati in modoesplicito in questa procedura. Tutti gli altri attributi dell'indice rimangono inalterati.

È utile se è necessario modificare gli attributi della raccolta, ad esempio la frequenza di aggiornamento,dopo che la raccolta è stata già creata.

ALTER_COLLECTION

Autorizzazione

Questa procedura memorizzata viene creata con l'autorizzazione pubblica *EXCLUDE ed è di proprietàdel creatore della raccolta di ricerche di testo.

La procedura adotterà l'autorizzazione del profilo del proprietario della raccolta di ricerche di testo.L'autorizzazione può essere concessa ad altri utenti per consentire l'esecuzione della procedura.

Sintassi>>-ALTER_COLLECTION--(--opzioni-----------------------------><

Il qualificativo dello schema è il nome della raccolta di ricerche di testo.

Parametri

opzioniUna stringa di caratteri che specifica le varie opzioni disponibili per questa procedura memorizzata.

Il tipo di dati per questo parametro è VARCHAR(32000).

Opzioni:

caratteristiche-aggiornamento

148 IBM i: OmniFind Text Search Server per DB2 per i

Page 155: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

caratteristiche-aggiornamento:

NONEUPDATE FREQUENCY < frequenza-aggiornamento >

caratteristiche-aggiornamentoSpecifica la frequenza degli aggiornamenti automatici alla raccolta di ricerche di testo. Il processo diaggiornamento per una raccolta di ricerche di testo implica l'indicizzazione dei dati di testo e laricerca per indicizzazione negli oggetti del sistema per rilevare dati nuovi o modificati.

UPDATE FREQUENCY frequenza-aggiornamentoSpecifica quando eseguire gli aggiornamenti automatici alla raccolta di ricerche di testo. Il valorepredefinito è NONE.

frequenza-aggiornamento (formato 1):

� � �

NONED ( * ) H ( * ) M ( * )

, , ,

0..6 0..23 0..590..6 0..23 0..59

NONESe viene specificato NONE, non vengono eseguiti ulteriori aggiornamenti dell'indice.L'aggiornamento deve essere avviato manualmente.

D Specifica il giorno o i giorni della settimana in cui viene aggiornato l'indice. Un asterisco(*) specifica tutti i giorni. 0 specifica domenica.

H Specifica l'ora o le ore in cui viene aggiornato l'indice. Un asterisco (*) specifica tutte leore.

M Specifica il minuto o i minuti in cui viene aggiornato l'indice. Non è possibile specificareun asterisco (*). La frequenza di aggiornamento minima è 5 minuti.

Esempio: questo esempio specifica che l'aggiornamento dell'indice viene eseguito ogni 30 minuti.UPDATE FREQUENCY D(*) H(*) M(0,30)

frequenza-aggiornamento (formato 2, cronologico):

< minuto> < ora> <giornoDelMese> <meseDell'Anno> <giornoDellaSettimana>

Il formato dell'opzione frequenza-aggiornamento (cronologico) è un elenco di cinque valori separatida uno spazio. I cinque valori rappresentano i minuti, le ore, i giorni del mese, i mesi dell'anno ei giorni della settimana, con inizio la domenica.

Se si specifica un intervallo di valori oppure un asterisco, è possibile specificare un valore dipasso utilizzando una barra (/) alla fine dell'intervallo definito.

Esempio: questo esempio specifica che l'aggiornamento dell'indice deve essere eseguito ogniquarto d'ora (0,15,30,45) nelle ore pari comprese tra le 8 e le 18:45 (8-18/2 è equivalente a8,10,12,14,16,18), dal lunedì al venerdì ogni mese dell'anno (* * 1-5).0,15,30,45 8-18/2 * * 1-5

minuto Specifica i minuti dell'ora in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per un intervallo di ogni 5 minuti oppure è possibilespecificare un numero intero compreso tra 0 e 59. Non è possibile ripetere i valori. Lafrequenza di aggiornamento minima è 5 minuti. Il valore 1,4,8 non è valido.

OmniFind Text Search Server 149

Page 156: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

frequenza-aggiornamento (minuti):

*/ 0...59

,

0...59 - 0...59/ 0...59

0...59

ora Specifica le ore del giorno in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni ora oppure è possibile specificare un numerointero compreso tra 0 e 23. Non è possibile ripetere i valori.

frequenza-aggiornamento (ore):

*/ 0...23

,

0...23 - 0...23/ 0...23

0...23

giornoDelMeseSpecifica i giorni del mese in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni giorno oppure è possibile specificare unnumero intero compreso tra 1 e 31. Non è possibile ripetere i valori.

frequenza-aggiornamento (giornoDelMese):

*/ 1...31

,

1...31 - 1...31/ 1...31

1...31

meseDell'AnnoSpecifica i mesi dell'anno in cui deve essere aggiornato l'indice di ricerca testo. È possibilespecificare un asterisco (*) per ogni mese oppure è possibile specificare un numero interocompreso tra 1 e 12. Non è possibile ripetere i valori.

frequenza-aggiornamento (meseDell'Anno):

*/ 1...12

,

1...12 - 1...12/ 1...12

1...12

giornoDellaSettimanaSpecifica i giorni della settimana in cui deve essere aggiornato l'indice di ricerca testo. Èpossibile specificare un asterisco (*) per ogni giorno oppure è possibile specificare unnumero intero 0 - 7. Sia 0 sia 7 sono valori validi per indicare la domenica. Non èpossibile ripetere i valori.

150 IBM i: OmniFind Text Search Server per DB2 per i

Page 157: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

frequenza-aggiornamento (giornoDellaSettimana):

*/ 0...7

,

0...7 - 0...7/ 0...7

0...7

Esempi1. CALL MYCOLLECTION.ALTER_COLLECTION(‘UPDATE FREQUENCY H(0) M(0) D(*)');

Il valore della frequenza di aggiornamento della raccolta MYCOLLECTION viene modificato. La raccolta di ricerche di testo avrà una frequenza di aggiornamento giornalier

2. CALL MYCOLLECTION.ALTER_COLLECTION(‘UPDATE FREQUENCY NONE');Questa raccolta di ricerche di testo viene modificata in non pianificata.

Per modificare una raccolta da IBM Navigator per i, attenersi alla seguente procedura.1. Da IBM Navigator per i, espandere Gestione IBM i > Sistema > Tutte le attività.2. Nel pannello a destra, selezionare Sistema > OmniFind > Modifica raccolta.

Considerazioni sull'IASP (Independent ASP) per le raccolte di ricerchedi testoConsiderazioni sull'IASP per una raccolta di ricerche di testo.

È possibile creare delle raccolte di ricerche di testo in un ambiente IASP (Independent Auxiliary StoragePool) con le seguenti limitazioni:1. Se un gruppo IASP è associato al sottoprocesso corrente, la raccolta deve risiedere in un ASP nel

gruppo IASP. Non è possibile gestire una raccolta di ricerche di testo nell'ASP di sistema o in un ASPutente di base quando il sottoprocesso è impostato su un gruppo IASP. È possibile effettuare la ricercain una raccolta presente nell'ASP di sistema o in un ASP utente di base, tuttavia, poiché quell'indicenon può includere i dati nel gruppo IASP, verranno inclusi solo gli oggetti che sono accessibili quandoil gruppo ASP è *NONE.

2. Una raccolta di ricerche di testo può indicizzare qualsiasi oggetto visibile dallo spazio nomi delgruppo ASP della raccolta.

3. Se una serie di oggetti include oggetti presenti all'interno dello spazio nomi del gruppo ASP, ma nonnel gruppo stesso, può trascorrere un tempo di indicizzazione significativo se il gruppo IASP vienespostato su un altro sistema. Ad esempio: se una raccolta viene creata su un IASP 33 per indicizzaretutti i file di spool sul sistema, e il gruppo ASP viene spostato su una macchina diversa, tutti i file dispool della vecchia macchina non presenti nel gruppo ASP verranno rimossi dall'indice e verrannoaggiunti tutti i file di spool nella nuova macchina non presenti nell'indice.

Considerazioni sul backup e il ripristino per le raccolte di ricerche ditestoSalvataggio e ripristino di una raccolta di ricerche di testo.

È possibile eseguire il backup e il ripristino di una raccolta di ricerche di testo salvando e ripristinando lalibreria dello schema creata per la raccolta. Durante il ripristino, verrà avviato un aggiornamento in modoasincrono. L'aggiornamento effettuerà una ricerca per indicizzazione degli oggetti sul sistema, eripopolerà l'indice.

OmniFind Text Search Server 151

Page 158: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Non è necessario essere in grado di ripristinare l'indice di ricerca testo contenuto nella raccolta per poterutilizzare la raccolta. È necessario effettuare le seguenti considerazioni per il ripristino di un indice diricerca testo:v Tutti i prodotti richiesti devono essere installati.v Il server di ricerca testo deve essere disponibile.

Messaggi e codiciSono qui presentati i messaggi e i codici di ritorno SQL per OmniFind Text Search per DB2 per i. Imessaggi sono elencati in sequenza numerica.

Messaggi OmniFindSono qui presentati i messaggi OmniFind per OmniFind Text Search per DB2 per i. I messaggi sonoelencati in sequenza numerica.

I messaggi vengono aggiunti al file di messaggi OmniFind (QDBTSLIB/QOMFMSGF) per i seguentierrori.

Tabella 40. Messaggi OmniFind

Numero Tipo Messaggio

OMF0011 Informativo L'indice di ricerca testo è stato ripristinato con opzioni di configurazionedifferenti.

OMF0012 Avvertenza Il tipo di FORMATO per l'indice in fase di creazione non è XML. Le ricerche XMLnon sono supportate.

OMF0334 Errore L'oggetto ''{0}''.''{1}'' specificato non è supportato. Un indice di ricerca testo puòessere creato solo su una tabella SQL, un alias SQL o un singolo membro di unfile fisico.

OMF0358 Errore L'utente corrente non dispone dell'autorizzazione necessaria per effettuarel'operazione richiesta.

OMF0359 Errore Ripristino non eseguito. Il server di testo per l'indice testo non è disponibile.

SQLCODE -0196 Non è possibile cancellare lacolonna &3 in &1 in &2.

Spiegazione: Si è tentato di eliminare la colonna &3.La colonna non può essere eliminata poiché da essadipende una vista, un vincolo, un trigger o un indiceed è stato specificato RESTRICT oppure la colonna faparte della chiave di partizione.

Risposta dell'utente: Specificare CASCADEsull'istruzione ALTER TABLE per cancellare la colonnae le viste, i vincoli, i trigger e gli indici da essadipendenti. Se la colonna fa parte della chiave dipartizione, specificare DROP PARTITIONINGnell'istruzione ALTER TABLE per eliminare ilpartizionamento per la tabella. Tentare nuovamente larichiesta.

SQLSTATE: 42817

SQLCODE -5003 Impossibile eseguire l'operazionesotto controllo del commit.

Spiegazione: Le operazioni seguenti non possonoessere eseguite sotto il controllo del commit con

COMMIT(*CHG), COMMIT(*CS) o COMMIT(*ALL)specificato:

v Istruzione DROP SCHEMA.

v Istruzione GRANT o REVOKE a un oggetto che haun archivio delle autorizzazioni.

v Istruzione CREATE nella modalità di denominazioneSQL di un oggetto che ha un archivio delleautorizzazioni.

v DROP di un indice di ricerca testo.

Queste operazioni non possono essere sottoposte acommit o a rollback.

Risposta dell'utente: Specificare COMMIT(*NONE), etentare nuovamente l'istruzione.

SQLSTATE: 42922

SQLCODE -20423 Si è verificato un errore durantel'elaborazione della ricerca testo.

Spiegazione: Si è verificato un errore durantel'elaborazione della ricerca testo di una funzione

SQLCODE -0196 • SQLCODE -20423

152 IBM i: OmniFind Text Search Server per DB2 per i

Page 159: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

CONTAINS o SCORE. L'errore si è verificato sul serverserver che utilizza l'indice di ricerca testo nome-indiceper il codice errore codice-errore. Il testo che descrive ilproblema è: testo.

server: Il nome host o l'indirizzo IP e la porta del serverdi ricerca testo dove è stato rilevato l'errore.

nome-indice: il nome dell'indice utilizzatonell'elaborazione della ricerca di testo.

Nota: includere lo schema e un punto con il nomeindice in un singolo token.codice-errore: il codice errore restituito da OmniFind TextSearch Server per DB2 per i.

testo: il testo restituito da OmniFind Text Search Serverper DB2 per i.

Azione del sistema: L'istruzione non può essereelaborata.

Risposta dell'utente: Contattare l'amministratore disistema per verificare che OmniFind Text Search Serverper DB2 per i sia installato correttamente.

SQLSTATE: 38H10

Riferimenti correlati:

“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS pereseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento diricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.

“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguireuna ricerca su un indice di ricerca testo utilizzando icriteri specificati in un argomento di ricerca. Lafunzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde allaquery.

SQLCODE -20424 Il supporto di ricerca testo non èdisponibile per il motivo codice-errore.

Spiegazione: È stato rilevato un problema con unadelle tabelle amministrative di ricerca testo. Il codiceerrore è codice-errore.

1 Una delle tabelle amministrative di ricercatesto non è stata trovata(QSYS2.SYSTEXTINDEXES,QSYS2.SYSTEXTCOLUMNS oQSYS2.SYSTEXTSERVERS).

3 Il supporto ricerca testo non è stato avviato.

4 La colonna STATUS nella tabellaQSYS2.SYSTEXTSERVERS ha il valore 1, cheindica che il supporto per la ricerca di testo èarrestato.

7 Nessun OmniFind Text Search Server per DB2per i è stato definito.

Azione del sistema: L'istruzione non può essereelaborata.

Risposta dell'utente: Contattare l'amministratore delsistema per assicurarsi che il supporto per la ricerca ditesto sia configurato correttamente sul sistema.

SQLSTATE: 38H11

Riferimenti correlati:

“Tabella di gestione QSYS2.SYSTEXTSERVERS” apagina 114È possibile visualizzare dove sono installati i server diricerca testo utilizzando la tabella di gestioneQSYS2.SYSTEXTSERVERS.

“Tabella di gestione QSYS2.SYSTEXTINDEXES” apagina 111È possibile visualizzare le informazioni su ciascunindice di ricerca testo nella tabella di gestioneQSYS2.SYSTEXTINDEXES. Ciascun indice di ricercatesto ha un nome, un nome schema e un nome raccoltaassociato sul server di ricerca testo.

“Tabella di gestione QSYS2.SYSTEXTCOLUMNS” apagina 113È possibile visualizzare le informazioni sulle colonne ditesto per un indice di ricerca testo nella tabella digestione QSYS2.SYSTEXTCOLUMNS. Ciascun indice diricerca testo ha un ID indice, dei nomi colonna di testoe il nome schema della tabella di base.

SQLCODE -20425 Ricerca testo non consentita per lacolonna nome-colonna.

Spiegazione: Una funzione di ricerca testoCONTAINS o SCORE ha specificato la colonnanome-colonna nella tabella nome-tabella in schema-tabella.Non esiste un indice testo per questa colonna quindinon è possibile eseguire l'elaborazione della ricercatesto.

Azione del sistema: L'istruzione non può essereelaborata.

Risposta dell'utente: Verificare che la colonna e latabella siano registrate su OmniFind Text Search Serverper DB2 per i.

SQLSTATE: 38H12

Riferimenti correlati:

“CONTAINS” a pagina 40È possibile utilizzare la funzione CONTAINS pereseguire una ricerca su un indice di ricerca testoutilizzando i criteri specificati in un argomento diricerca. La funzione restituisce un risultato che indicase è stata trovata una corrispondenza.

SQLCODE -20424 • SQLCODE -20425

OmniFind Text Search Server 153

Page 160: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

“SCORE” a pagina 42È possibile utilizzare la funzione SCORE per eseguireuna ricerca su un indice di ricerca testo utilizzando icriteri specificati in un argomento di ricerca. Lafunzione restituisce un punteggio di pertinenza chemisura la misura in cui un documento corrisponde allaquery.

SQLCODE -20426 Procedura di gestione di ricercatesto in conflitto già in esecuzione.

Spiegazione: Una procedura di gestione di ricercatesto in conflitto quale ad esempio l'aggiornamento ègià in esecuzione su questo indice.

Azione del sistema: L'istruzione non può essereelaborata.

Risposta dell'utente: Una volta completata laprocedura memorizzata attualmente in esecuzione,richiamare nuovamente la procedura memorizzata digestione.

SQLSTATE: 38H13

SQLCODE -20427 Si è verificato un errore durantela procedura di gestione di ricerca testo.

Spiegazione: Si è verificato un errore durante unaprocedura di gestione di ricerca testo. Il codice errore ècodice-errore. Il testo restituito è: testo. Il testo di erroredescrive il problema.

Azione del sistema: L'istruzione CALL ha esitonegativo con questo SQLCODE.

Risposta dell'utente: Correggere il problema indicatoda errore e richiamare nuovamente la proceduramemorizzata di gestione.

SQLSTATE: 38H14

CPF32fa L'operazione non è consentita sull'indicedi ricerca testo &2 in &1.

Spiegazione: È stata tentata un'operazione che non èsupportata per un indice di ricerca testo. Gli indici diricerca testo non consentono alcune operazioniconsentite per indici e viste DB2 classici.

Se si è tentato di cancellare l'indice, è possibile chel'operazione non sia riuscita poiché il controllo delcommit era attivo.

Risposta dell'utente: Eseguire le operazioni digestione di ricerca testo utilizzando le procedurememorizzate SQL di gestione incluse con OmniFindText Search Server per DB2 per i.

Per ulteriori informazioni sugli indici di ricerca testo, esulle limitazioni che si applicano ad essi, consultare ladocumentazione nell'Information Center:http://www.ibm.com/systems/i/infocenter/

CPF32fb Non è stato possibile completarel'operazione sull'indice di ricerca testo&2 in &1.

Spiegazione: È stata tentata un'operazione sull'indicedi ricerca testo &2 in &1. L'operazione richiesta non ècorrentemente valida per il codice di errore &3. I codicidi errore ed i relativi significati sono:

1. Un prodotto richiesto non è installato

2. Il server di ricerca testo richiesto &4 non èdisponibile o non è definito.

3. Si è tentato di ripristinare l'indice ma l'indice giàesiste. Non è stato possibile modificare l'indiceesistente in modo da farlo corrispondere all'indicesalvato.

4. Non esisteva un oggetto dipendente &5 in &6 tipo&7.

5. Non era disponibile un oggetto &5 in &6 tipo &7.

6. L'ASP (auxiliary storage pool) per il sottoprocessocorrente non corrisponde all'ASP dell'indice diricerca testo.

7. Un indice di ricerca testo già esiste per la colonna&8, tabella &5 nella libreria &6.

Risposta dell'utente: Correggere il problema eritentare l'operazione.

Per ulteriori informazioni sugli indici di ricerca testo,consultare la documentazione nell'Information Center:http://www.ibm.com/systems/i/infocenter

CPI321E Il file &1 nella libreria &2 è statodifferito.

Spiegazione: Il file &1 nella libreria &2 è statodifferito durante questa richiesta di ripristino con un IDdi differimento specificato di &4. Il file è stato differitoa causa del codice di errore &3. I codici di errore sono iseguenti:

1. Il file di base &5 nella libreria &6 non era presentequando si stava creando &1 per il ripristino.

2. Impossibile creare il file &1 per ragioni diversedalla mancanza di un file di base. Vedere i(il)messaggi(o) precedenti(e) per determinare perché lacreazione del file non è riuscita.

3. Impossibile creare uno o più membri del file &1.Vedere i(il) messaggi(o) precedenti(e) perdeterminare perché la creazione del membro non èriuscita.

4. Il file rappresenta un indice di ricerca testo e sulsistema non esiste un prodotto richiesto.

5. Il File rappresenta un indice di ricerca testo el'indice non può essere creato in questo momento.

Risposta dell'utente: Per il codice errore 1:Ripristinare il file di base mancante o utilizzare ilcomando RSTDFROBJ (Ripristino oggetti differiti)specificando lo stesso ID di differimento (parametroDFRID) &4 su uno qualsiasi dei comandi utilizzati.

SQLCODE -20426 • CPI321E

154 IBM i: OmniFind Text Search Server per DB2 per i

Page 161: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Per i codici errore 2 e 3: Correggere le cause dellacreazione non riuscita e utilizzare il comandoRSTDFROBJ (Ripristino oggetti differiti) specificando lostesso ID di differimento (parametro DFRID) &4 sulcomando.

Per il codice errore 5: Consultare i messaggi precedenti

nella registrazione lavoro, correggere eventuali errori equindi utilizzare il comando RSTDFROBJ (Ripristinooggetti differiti), specificando lo stesso ID didifferimento (parametro DFRID) &4 sul comando.

Informazioni correlate:

Restore Deferred Objects (RSTDFROBJ)

Informazioni sull'esonero di responsabilità e licenza del codiceIBM fornisce una licenza non esclusiva per utilizzare tutti gli esempi del codice di programmazione dacui creare funzioni simili personalizzate, in base a richieste specifiche.

OLTRE ALLE GARANZIE STABILITE DALLA LEGGE CHE NON POSSONO ESSERE ESCLUSE, IBM,GLI SVILUPPATORI DEL PROGRAMMA E I FORNITORI NON OFFRONO GARANZIE O CONDIZIONIESPRESSE O IMPLICITE, INCLUSO, MA NON SOLO, LE GARANZIE O CONDIZIONI IMPLICITE DICOMMERCIABILITA', ADATTABILITA' A UNO SCOPO PARTICOLARE E NON CONTRAFFAZIONERELATIVAMENTE AL PROGRAMMA E AL SUPPORTO TECNICO, SE PRESENTE.

IN NESSUN CASO IBM, GLI SVILUPPATORI DEL PROGRAMMA O I FORNITORI SARANNORESPONSABILI PER QUANTO SEGUE, ANCHE SE INFORMATI DEL POSSIBILE VERIFICARSI DITALI DANNI:1. PERDITA O DANNEGGIAMENTO DI DATI;2. DANNI PARTICOLARI, INCIDENTALI, DIRETTI O INDIRETTI O QUALSIASI DANNO

ECONOMICO CONSEGUENTE; OPPURE3. PERDITE DI PROFITTI, AFFARI, ENTRATE O SPESE ANTICIPATE.

LA LEGISLAZIONE DI ALCUNI PAESI NON CONSENTE L'ESCLUSIONE O LA LIMITAZIONE DELLEGARANZIE DI DANNI DIRETTI, INCIDENTALI O CONSEQUENZIALI, PERTANTO ALCUNE OTUTTE LE SUDDETTE ESCLUSIONI O LIMITAZIONI POTREBBERO NON ESSERE APPLICABILI.

OmniFind Text Search Server 155

Page 162: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

156 IBM i: OmniFind Text Search Server per DB2 per i

Page 163: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Informazioni particolari

Queste informazioni sono state sviluppate per prodotti e servizi offerti negli Stati Uniti.

IBM può non offrire i prodotti, i servizi o le funzioni presentati in questo documento in altri paesi.Consultare il proprio rappresentante locale IBM per informazioni sui prodotti ed i servizi attualmentedisponibili nella propria zona. Qualsiasi riferimento ad un prodotto, programma o servizio IBM nonimplica o intende dichiarare che solo quel prodotto, programma o servizio IBM può essere utilizzato.Qualsiasi prodotto funzionalmente equivalente al prodotto, programma o servizio che non violi alcundiritto di proprietà intellettuale IBM può essere utilizzato. Tuttavia la valutazione e la verifica dell'uso diprodotti o servizi non IBM ricadono esclusivamente sotto la responsabilità dell'utente.

IBM può avere brevetti o domande di brevetti in corso relativi a quanto trattato nel presente documento.La fornitura di questa pubblicazione non garantisce la concessione di alcuna licenza su tali brevetti. Chidesiderasse ricevere informazioni relative alla licenza può rivolgersi per iscritto a:

IBM Director of Commercial RelationsIBM EuropeSchoenaicher Str. 220D-7030 BoeblingenDeutschland

Per informazioni sulle richieste di licenze relative al doppio byte (DBCS), contattare il reparto proprietàintellettuale IBM nel proprio paese o inviare le richieste per iscritto all'indirizzo:

Intellectual Property LicensingLegal and Intellectual Property LawIBM Japan Ltd.1623-14, Shimotsuruma, Yamato-shiKanagawa 242-8502 Japan

Le disposizioni contenute nel seguente paragrafo non si applicano al Regno Unito o ad altri paesi neiquali tali disposizioni non siano congruenti con le leggi locali: IBM FORNISCE QUESTAPUBBLICAZIONE COSÌ COM'È SENZA ALCUNA GARANZIA, ESPLICITA O IMPLICITA, IVI INCLUSEEVENTUALI GARANZIE DI COMMERCIABILITÀ ED IDONEITÀ AD UNO SCOPO PARTICOLARE.Alcuni stati non consentono la rinuncia ad alcune garanzie espresse o implicite in determinatetransazioni, pertanto, la presente dichiarazione può non essere applicabile.

Queste informazioni potrebbero contenere imprecisioni tecniche o errori tipografici. Si effettuanoperiodicamente modifiche alle informazioni qui accluse; queste modifiche saranno inserite in nuoveedizioni della pubblicazione. IBM si riserva di apportare senza preavviso e in qualsiasi momentomiglioramenti e/o modifiche al/i prodotto/i e/o al/i programma/i descritto/i in questa pubblicazione.

Qualsiasi riferimento a siti web non IBM, contenuto in queste informazioni, viene fornito solo percomodità e non implica in alcun modo l'approvazione di tali siti. Le informazioni reperibili nei siti Webnon sono parte integrante delle informazioni relative a questo prodotto IBM, pertanto il loro utilizzoricade sotto la responsabilità dell'utente.

IBM può utilizzare o distribuire le informazioni fornite in qualsiasi modo ritenga appropriato senzaobblighi verso l'utente.

© Copyright IBM Corp. 2002, 2013 157

Page 164: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

I licenziatari di questo programma che desiderano avere informazioni allo scopo di abilitare: (i) loscambio di informazioni tra i programmi creati indipendentemente e gli altri programmi (incluso ilpresente) e (ii) il reciproco utilizzo di informazioni che sono state scambiate, dovrebbero contattare:

IBM CorporationSoftware Interoperability Coordinator, Department YBWA3605 Highway 52 NRochester, MN 55901U.S.A.

Tali informazioni possono essere disponibili, in base ad appropriate clausole e condizioni, includendo inalcuni casi, il pagamento di una tassa.

Il programma su licenza descritto in questo documento e tutto il relativo materiale disponibile vienefornito da IBM in base ai termini dell'accordo IBM Customer Agreement, IBM International ProgramLicense Agreement o qualsiasi altro accordo equivalente tra le parti.

Tutti i dati sulle prestazioni contenuti in questa pubblicazione sono stati determinati in un ambientecontrollato. Pertanto, i risultati ottenuti in ambienti operativi diversi possono variare in modosignificativo. È possibile che alcune misurazioni siano state effettuate su sistemi a livello di sviluppo enon è garantito che queste misurazioni corrispondano a quelle dei sistemi generalmente disponibili.Inoltre, è possibile che alcune misurazioni siano state calcolate tramite estrapolazione. I risultati realipossono variare. Gli utenti di questa pubblicazione devono verificare che i dati siano applicabili al lorospecifico ambiente.

Le informazioni riguardanti prodotti non IBM sono ottenute dai fornitori di tali prodotti, dai loro annuncipubblicati o da altre fonti pubblicamente reperibili. IBM non ha testato tali prodotti e non può confermarel'adeguatezza delle prestazioni, della compatibilità o di altre richieste relative a prodotti non IBM. Ledomande sulle capacità dei prodotti non IBM dovranno essere indirizzate ai fornitori di tali prodotti.

Tutte le specifiche relative alle direttive o intenti futuri di IBM sono soggette a modifiche o a revochesenza notifica e rappresentano soltanto scopi ed obiettivi.

Tutti i prezzi IBM mostrati sono i prezzi al dettaglio suggeriti da IBM, sono attuali e soggetti a modificasenza preavviso. I prezzi al fornitore possono variare.

Queste informazioni vengono fornite soltanto a scopo di pianificazione. Le informazioni contenute inquesta pubblicazione sono soggette a modifica prima che i prodotti in essa descritti diventino disponibili.

Queste informazioni contengono esempi di dati e prospetti utilizzati in quotidiane operazioni aziendali.Per illustrarle nel modo più completo possibile, gli esempi includono i nomi di individui, società, marchie prodotti. Tutti questi nomi sono fittizi e qualsiasi somiglianza con nomi ed indirizzi utilizzati da gruppiaziendali realmente esistenti è puramente casuale.

LICENZA DI COPYRIGHT:

Queste informazioni contengono programmi di applicazione di esempio nella lingua di origine, cheillustrano le tecniche di programmazione su varie piatteforme operative. È possibile copiare, modificare edistribuire questi programmi di esempio in qualsiasi formato senza pagare alcun corrispettivo a IBM, alloscopo di sviluppare, utilizzare, commercializzare o distribuire i programmi dell'applicazione conformiall'interfaccia di programmazione dell'applicazione per la piattaforma operativa per cui i programmi diesempio vengono scritti. Questi esempi non sono stati interamente testati in tutte le condizioni. IBM,perciò, non fornisce nessun tipo di garanzia o affidabilità implicita, rispetto alla funzionalità o allefunzioni di questi programmi. I programmi di esempio vengono forniti "COSI' COME SONO", senzagaranzie di alcun tipo. IBM non intende essere responsabile per alcun danno derivante dall'uso deiprogrammi di esempio.

158 IBM i: OmniFind Text Search Server per DB2 per i

Page 165: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Ogni copia, parte di questi programmi di esempio o lavoro derivato, devono includere un avviso sulcopyright, come ad esempio:

© il nome della società) (anno). Le parti di questo codice provengono da IBM Corp. Sample Programs.

© Copyright IBM Corp. _immettere l'anno o gli anni_.

Se si sta utilizzando la versione in formato elettronico di questo manuale, le fotografie e le illustrazioni acolori potrebbero non essere visualizzate.

Informazioni sull'interfaccia di programmazioneQuesta pubblicazione CIM (Common Information Model) illustra le interfacce di programmazione checonsentono al cliente di scrivere programmi per ottenere i servizi di IBM i.

MarchiIBM, il logo IBM e ibm.com sono marchi di International Business Machines Corp., registrati in moltegiurisdizioni del mondo. Altri nomi di prodotti e servizi possono essere marchi di IBM o di altre società.Un elenco attuale di marchi IBM è disponibile su Web nella sezione “Copyright and trademarkinformation” al sito www.ibm.com/legal/copytrade.shtml.

Adobe, il logo Adobe, PostScript ed il logo PostScript sono marchi di Adobe Systems Incorporated negliStati Uniti e/o negli altri paesi.

IT Infrastructure Library è un marchio registrato dell'ufficio Central Computer and TelecommunicationsAgency che fa ora parte dell'OGC (Office of Government Commerce).

Intel, il logo Intel, Intel Inside, il logo Intel Inside, Intel Centrino, il logo Intel Centrino, Celeron, IntelXeon, Intel SpeedStep, Itanium e Pentium sono marchi della Intel Corporation o delle sue consociate negliStati Uniti e/o negli altri paesi.

Linux è un marchio registrato di Linus Torvalds negli Stati Uniti e/o negli altri paesi.

Microsoft, Windows, Windows NT e il logo Windows sono marchi di Microsoft Corporation negli StatiUniti e/o negli altri paesi.

ITIL è un marchio registrato e un marchio comunitario registrato dell'OGC (Office of GovernmentCommerce) ed è registrato presso l'ufficio marchi e brevetti statunitense (U.S. Patent and TrademarkOffice).

UNIX è un marchio registrato negli Stati Uniti e in altri paesi con licenza esclusiva di Open Group.

Cell Broadband Engine è un marchio di Sony Computer Entertainment, Inc. negli Stati Uniti e/o neglialtri paesi e viene utilizzato su licenza.

Java e tutti i marchi e i logo basati su Java sono marchi di Sun Microsystems, Inc. negli Stati Uniti e/o inaltri paesi.

Altri nomi di prodotti e servizi possono essere marchi IBM o di altre società.

Informazioni particolari 159

Page 166: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

160 IBM i: OmniFind Text Search Server per DB2 per i

Page 167: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

Indice analitico

AADD_SPLF_OBJECT_SET 123, 130aggiornamento della raccolta 138aggiunta di una serie di oggetti per dati

di file di spoolADD_SPLF_OBJECT_SET 123

aggiunta di una serie di oggetti per unfile di flusso

ADD_IFS_STMF_OBJECT_SET 130alta disponibilità 92argomento di ricerca 40, 42

Ccodici di ritorno SQL 152codici lingua 8COLLECTION_NAME.UPDATE 138collection.status 146compilazione 12comunicazioni client-server 2concetti chiave

funzioni di ricerca testo 4configurazione 12CONTAINS 46

Ddati XML

indicizzazione 6determinazione dei problemi 74dimensione del documento 15dizionario di sinonimi 84

aggiunta 85eliminazione 86

Eelaborazione linguistica 8

cineseelaborazione linguistica 9

Cinese 9coreano 9

elaborazione linguistica 9giapponese

elaborazione linguistica 9Giapponese 9

eliminazione di una raccolta di ricerchedi testo

SYSTS_DROP_COLLECTION 147esempi di query

funzione CONTAINS 46funzione SCORE 46

Ffile di registrazione 74formati di documento

supportati 6

funzione CONTAINSesempio 52

funzione SCOREesempio 52

funzioniCONTAINS 40SCORE 42

funzioni definite dall'utente 40funzioni di ricerca testo

concetti chiave 4

GGet_object_status 143GET_OBJECTS_NOT_INDEXED 144grammatica EBNF 68

Hhardware

requisiti 4Health Checker 90

IIASP per le raccolte di ricerche di testo

raccolte di ricerche di testo 151IBM OmniFind Text Search Server

arresto 70avvio 69

indice di ricerca testo 71, 72aggiornamenti 4, 117aggiornamento 14creazione 4, 14, 117ricerca 14

indice testo 2, 71, 72indicizzazione asincrona 5installazione 12intestazione estensioni

raccolte di ricerche testo 117

Llinguaggio XPath 68lingue

supportate 8

Mmessaggi 152

OOmniFind 2, 12OmniFind Text Search 12OmniFind Text Search Server 12operatori di ricerca avanzata

funzione CONTAINS 47

operatori di ricerca avanzata (Continua)funzione SCORE 47

Ppacchetto dizionario 8panoramica del prodotto 2prestazioni 93procedura memorizzata

SYSPROC.SYSTS_REMOVE 78SYSPROC.SYSTS_REPRIMEINDEX 79,

80SYSPROC.SYSTS_VALIDITYCHECK 82

procedure memorizzate 15SYSPROC.SYSTS_ALTER 28SYSPROC.SYSTS_CREATE 18SYSPROC.SYSTS_DROP 34SYSPROC.SYSTS_START 15SYSPROC.SYSTS_STOP 17SYSPROC.SYSTS_UPDATE 35

punteggio di pertinenza 42punteggio testuale 7

QQDBTS_LISTINXSTS

UDTF 86QDBTS_LISTINXSTS UDTF 86QSYS2.SYSTEXTCOLUMNS 113, 116QSYS2.SYSTEXTCONFIGURATION 115QSYS2.SYSTEXTINDEXES 111QSYS2.SYSTEXTSERVERHISTORY 116QSYS2.SYSTEXTSERVERS 12, 114query delle informazioni sulle serie di

oggetti 142QUERY_OBJECT_SET 142

Rraccolte di ricerche testo

intestazione estensioni 117registrazione del server

salvataggio 74visualizzazione 74

requisiti di sistema 4ricarica raccolta 139ricerca 93, 97ricerca di testo 2

avvio 13ricerca raccolta

SEARCH 140SYSPROC.SYSTS_CRTCOL 118

ricerca XMLgrammatica delle query 68

Ricerca XMLfunzioni 53

richiamo dello stato degli oggettiindicizzati 143

richiamo dello stato della raccolta 146Richiamo di oggetti non indicizzati 144

© Copyright IBM Corp. 2002, 2013 161

Page 168: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

rimozione di una serie di oggettiREMOVE_OBJECT_SET 137

ripopolamento della raccolta di ricerchedi testo 139

ripristino 71, 72Ripristino per le raccolte di ricerche di

testoripristino delle raccolte di ricerche di

testo 151

Ssalvataggio 71, 72salvataggio e ripristino 71, 72SCORE 46segmentazione basata sui dizionari 9segmentazione per n-grammi 8, 9server di ricerca testo 12server di ricerca testo IBM 4server di ricerca testo OmniFind 2

indice testo 2OmniFind 2ricerca di testo 2

sintassi degli argomenti di ricerca 40carattere jolly 44esclusione di termini 44inclusione di termini 44ricerca per frase 44ricerca semplice 44

sintassi della ricerca 40sistema operativo

requisiti 4software

requisiti 4strumenti di riga comandi 75

Health Checker 90Strumento dei sinonimi 84Strumento di configurazione 75Strumento di gestione 88Strumento ServerInstance 89

Strumento dei sinonimi 84Strumento di configurazione 75Strumento di gestione 88Strumento ServerInstance 89supporto dei sinonimi 7SYSIBMTS.SYSTEXTDEFAULTS 110SYSPROC.SYSTS_CREATE 18SYSPROC.SYSTS_CREATE_COLLECTION 118SYSPROC.SYSTS_CRTCOL 118SYSPROC.SYSTS_DROP 28, 34SYSPROC.SYSTS_START 15SYSPROC.SYSTS_STOP 17SYSPROC.SYSTS_UPDATE 35SYSTEXTSERVERS 12

Ttabelle di gestione 110

QSYS2.SYSTEXTCOLUMNS 113, 116QSYS2.SYSTEXTCONFIGURATION 115QSYS2.SYSTEXTINDEXES 111QSYS2.SYSTEXTSERVERHISTORY 116QSYS2.SYSTEXTSERVERS 114SYSIBMTS.SYSTEXTDEFAULTS 110

Text Search per DB2 per i 12

tipi di datisupportati 7

transazione 97trigger 5troncamento di documenti 15

UUPDATEAUTOCOMMIT 93, 97

162 IBM i: OmniFind Text Search Server per DB2 per i

Page 169: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,
Page 170: IBM i: OmniFind Text Search Server per DB2 per i...memorizzati nel database DB2. Tuttavia, un server di ricerca testo può essere creato su un altro server che esegue IBM i, Linux,

����

Numero programma: 5733-OMF

Stampato in Italia