Le collection, come abbiamo detto, sono dei database speciali - ottimizzati per essere interrogati da un sistema di ricerca. Il database di una collection ColdFusion risiede fisicamente sul server.
1. Salva un nuovo file crea_collection.cfm e utilizza <cfcollection>. per creare una collection chiamata "collectionDiscoteca":
<!--- crea_collection.cfm: crea una nuova collection chiamata collectionDiscoteca --->
<cfcollection action="create" collection="collectionDiscoteca" path="C:CFusionMXVerityCollections">
<p>La collection è stata creata!</p>
Con il tag <cfcollection>. è possibile gestire le collection: l'attributo action="create" indica che il tag ne deve creare una nuova, il cui nome è indicato nell'attributo "collection". Il "path" è necessario per dire a ColdFusion in quale directory del server (che in questo caso è il nostro computer) salvare il database di questa collection. In genere, il path che si dà è sempre C:CFusionMXVerityCollections.
2. Poiché, in ogni caso, stiamo facendo un lavoro di gestione del nostro sito web, includi il file autenticazione.cfm per permettere la creazione di una collection solamente agli utenti autenticati:
<!--- crea_collection.cfm: crea una nuova collection chiamata collectionDiscoteca --->
<cfinclude template="autenticazione.cfm">
<cfcollection action="create" collection="collectionDiscoteca" path="C:CFusionMXVerityCollections">
<p>La collection è stata creata!</p>
Apri nel browser il file "http://localhost:8500/discoteca/crea_collection.cfm". Dopo aver eseguito l'autenticazione, ColdFusion ha creato la collection.
A questo punto dobbiamo "riempirla", cioè indicizzarla. Con cosa? Naturalmente con il contenuto della tabella ALBUM del database. "collectionDiscoteca" diventerà una specie di replica della tabella ottimizzata per la ricerca.
3. Utilizza <cfquery> per recuperare il contenuto di tutta la tabella ALBUM. Salva il codice in un nuovo file index_collection.cfm:
<!--- index_collection.cfm: indicizza i dati in una collection prendendoli da una query --->
<cfquery name="getAlbum" datasource="#application.DSN#">
SELECT ID_ALBUM, ALBUM_TITOLO, ALBUM_AUTORE, ALBUM_DESCR, ALBUM_GENERE
FROM ALBUM</cfquery>
Con il tag <cfindex>. e il suo attributo action="refresh" si indicizzano le collection. L'attributo "query" indica la query il cui risultato deve essere indicizzato, mentre con l'attributo "body" indichiamo quali campi della query devono essere utilizzati come testo su cui effettuare la ricerca.
Quando si esegue una ricerca all'interno di una collection, essa è in grado di restituire un titolo e una "chiave" (rappresentata solitamente dall'id del record trovato). Nel caso della nostra query, il titolo è sicuramente il campo "ALBUM_TITOLO" e la chiave il campo "ID_ALBUM".
4. Aggiungi al file index_collection.cfm il tag <cfindex> per indicizzare "collectionDiscoteca" con i valori provenienti dalla query getAlbum:
<!--- index_collection.cfm: indicizza i dati in una collection prendendoli da una query --->
<cfquery name="getAlbum" datasource="#application.DSN#">
SELECT ID_ALBUM, ALBUM_TITOLO, ALBUM_AUTORE, ALBUM_DESCR, ALBUM_GENERE
FROM ALBUM</cfquery>
<cfindex collection="collectionDiscoteca" action="refresh" query="getAlbum" key="ID_ALBUM" title="ALBUM_TITOLO" body="ALBUM_TITOLO,ALBUM_AUTORE,ALBUM_DESCR,ALBUM_GENERE">
<p>La collection è stata indicizzata :-)</p>
Nell'attributo "body" abbiamo separato con una virgola i campi che devono essere indicizzati.
5. Includi anche qui autenticazione.cfm per proteggere il file:
<!--- index_collection.cfm: indicizza i dati in una collection prendendoli da una query --->
<cfinclude template="autenticazione.cfm">
<cfquery name="getAlbum" datasource="#application.DSN#">
SELECT ID_ALBUM, ALBUM_TITOLO, ALBUM_AUTORE, ALBUM_DESCR, ALBUM_GENERE
FROM ALBUM</cfquery>
<cfindex action="refresh" collection="collectionDiscoteca" query="getAlbum" key="ID_ALBUM" title="ALBUM_TITOLO" body="ALBUM_TITOLO,ALBUM_AUTORE,ALBUM_DESCR,ALBUM_GENERE">
<p>La collection è stata indicizzata :-)</p>
Apri nel browser "http://localhost:8500/discoteca/index_collection.cfm" per indicizzare la collection.