4D Write Pro – Indicizzazione del testo completo

Tradotto automaticamente da Deepl

“Voglio trovare tutti i documenti che parlano di tango! Mi servono velocemente! Posso farlo?”

Ok, ma prima respira!

La ricerca di parole chiave all’interno dei documenti di 4D Write Pro richiede semplicemente l’aggiunta di un nuovo attributo di indicizzazione all’interno di ciascun documento. Questo non viene fatto di default perché questo tipo di ricerca non è spesso necessario e non avrebbe senso aumentare sistematicamente le dimensioni dei documenti. Tuttavia, quando è necessario, questo tipo di indice è molto facile da costruire.

“Il tango è un ballo tradizionale argentino”. Il nostro obiettivo è creare un elenco di parole a partire dal contenuto dei documenti. Questo viene fatto principalmente con due comandi:

  • WP Get text – restituisce il testo grezzo del documento
  • Get text keywords – riempie un array di testo con le parole del testo fornito. Una volta riempito questo array, è sufficiente aggiungerlo come attributo dell’oggetto documento di 4D Write Pro e utilizzarlo come obiettivo per la ricerca di parole chiave.

Diamo un’occhiata più da vicino ai dettagli.

Non perdete nulla inSIDE il documento

WP Get text restituisce il contenuto del target come testo normale. Il target può essere un determinato intervallo o un intero documento. Se si passa un documento come argomento, verrà restituito solo il testo del corpo del documento. Le intestazioni e i piè di pagina saranno ignorati, il che probabilmente non è auspicabile. Poiché ogni sezione di un documento può avere le sue intestazioni e i suoi piè di pagina, sarà necessario scorrere ogni sezione e leggerne il contenuto. Accertarsi di tenere conto di eventuali varianti (ad esempio, prima pagina, pagina di destra, pagina di sinistra).

Mettere il testo in UN ARRAY

Get text keywords riempie un array in base al contenuto del testo di partenza. L’unica sottigliezza è quella di non dimenticare il parametro opzionale stella (*). Esso consente di riempire l’array solo con valori distinti dalle parole del testo. In questo modo si evita un “peso” inutile 🙂

Creare l’indice nel documento

Il nome dell’attributo che conterrà l’indice è a scelta dell’utente, ma si raccomanda vivamente di anteporvi un trattino basso per evitare potenziali conflitti con attributi pubblici esistenti (o futuri) dei documenti 4D Write Pro (esempio: “_keywords”).

Naturalmente, l’indicizzazione deve essere eseguita ogni volta che i documenti vengono modificati, ma si tratta di un’operazione molto rapida che non causa alcun rallentamento agli utenti.

Indicizzare l’indice!

Affinché le query che utilizzano l’indice delle parole chiave siano veloci ed efficienti, il documento stesso deve essere indicizzato. Non è necessario preoccuparsi della dimensione dell’indice. Vengono indicizzati solo gli attributi esposti (pubblici), quindi ci si deve aspettare solo un leggerissimo sovradimensionamento. Ad esempio, non è necessario creare un nuovo campo dell’oggetto che serva solo a questo scopo. Sarebbe del tutto inutile e lo spazio occupato sarebbe maggiore rispetto all’utilizzo di un oggetto esistente (ad esempio, il documento 4D Write Pro stesso).

Nel caso dei campi oggetto, “Automatico” significa “cluster b-tree”, perfetto per le lettere commerciali o documenti simili.

Esecuzione di query su questo indice

Le query classiche devono essere effettuate “per attributo”. Tenete presente che l’attributo è una collezione, quindi dovete aggiungere le parentesi di apertura e di chiusura [ ] per indicare a 4D che la ricerca deve essere effettuata all’interno di questa collezione. Ad esempio:

QUERY BY ATTRIBUTE([SAMPLE]; [SAMPLE]WP; "_keywords[]"; =; $val)

Le interrogazioni ORDA vengono eseguite secondo lo stesso principio:

$entitySel:=ds.SAMPLE.query("WP._keywords[] = :1"; $val)

Conclusione

Se nei vostri documenti questo tipo di indicizzazione non è stato previsto fin dall’inizio e se ne presenta la necessità, non è mai troppo tardi! Apply to selection del metodo di indicizzazione farà perfettamente il suo lavoro. Le ricerche possono anche essere combinate per prendere in considerazione più parole contemporaneamente (tutte le parole) o separatamente (almeno una delle parole). Questo vi permetterà (e soprattutto agli utenti dei vostri database) di trovare molto rapidamente i testi in base alle parole che contengono.

Ora avete due metodi per creare (e forse rimuovere) l’indice full-text! Possono essere utilizzati a partire da 4D V17. Date un’occhiata a questo frammento di codice che potete utilizzare nella vostra applicazione!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.