Strumenti Utente

Strumenti Sito


documentazione_3di:extraway:range

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
documentazione_3di:extraway:range [2010/07/02 18:37] rtirabassidocumentazione_3di:extraway:range [2012/07/23 15:39] (versione attuale) – eliminata rtirabassi
Linea 1: Linea 1:
-====== Ricerca per Range ====== 
  
-Il concetto di ricerca per range di termini nasce per consentire di esprimere intervalli di chiavi da selezionare da un vocabolario da utilizzare tutte insieme come se si trattasse di un unica chiave. 
- 
-Per tale ragione si è concepita una sintassi che consentisse di esprimere queste condizioni. La sintassi, in seguito, è gradualmente evoluta comprendendo anche modalità che con gli intervalli di termini avevano ben poco a che fare ma che si prestavano per esprimere il tutto come se fosse un'unica chiave. 
- 
-Al fine di meglio comprendere la finalità di questa forma d'estensione pensiamo all'adiacenza tra questo intervallo di termini ed un altro termine. Solo trattandolo come se fosse un termine singolo l'adiacenza ha ragionevole speranza di essere portata a termine e di riuscire in questo compito in tempi ragionevoli. 
- 
-|**Nota:** In tutti gli esempi successivi, quando si parla di estremo o termine, ci si riferisce ad una chiave utilizzata per compiere la ricerca. La risoluzione del range assumerà che la prima chiave abbia inizio subito dopo il carattere **{** e fine prima dell'identificatore di range e così per la seconda chiave, dal primo carattere che segue l'identificatore di range sino al carattere **}**.\\ Ogni chiave può essere racchiusa tra doppi apici e __deve__ essere racchiusa tra doppi apici quando il suo contenuto possa risultare ambiguo nei confronti di un identificatore di range.\\ Non vale il ragionamento secondo il quale il primo identificatore incontrato viene preso in esame e gli altri trattati come semplici caratteri. | 
- 
-===== Sintassi di base ===== 
- 
-La sintassi di base è estremamente semplice. Il termine viene rappresentato da qualcosa che va racchiuso tra parentesi graffe {} all'interno delle quali l'espressione cambia a seconda dei simboli e dei modificatori utilizzati. 
- 
-Avremo quindi una condizione del tipo:\\  
-<color brown>[campo]=</color><color blue>{espressione}</color> 
- 
-===== Le sintassi classiche ===== 
- 
-Quando parliamo di sintassi classica ci riferiamo al fatto che la sintassi rappresenti realmente un intervallo di termini.\\ L'intervallo può essere chiuso o aperto.\\ L'intervallo si dice chiuso quando entrambe gli estremi sono stati esplicitati e si dice invece aperto quando solo uno dei due estremi viene esplicitato. 
- 
-La sintassi che ne deriva, per il range chiuso, è la seguente\\  
-<color brown>[campo]=</color>**{**<color green>estemo inferiore</color><color red>identificatore tipo range</color><color green>estemo superiore</color>**}** 
- 
-Analogamente avremo due possibili ranges aperti\\  
-<color brown>[campo]=</color>**{**<color green>estemo inferiore</color><color red>identificatore tipo range</color>**}**\\  
-<color brown>[campo]=</color>**{**<color red>identificatore tipo range</color><color green>estemo superiore</color>**}** 
- 
-Come detto gli estremi non sono entrambe obbligatori((salvo qualche caso particolare)) ed il significato del range cambia in virtù del suo identificatore.\\ Vediamo come 
- 
-^ Identificatore tipo Range ^ Descrizione ^ 
-^  **<nowiki>|</nowiki>**  | Range inclusivo. Entrambe gli estremi indicati sono inclusi nei termini da ricercare. Si può esprimere un range aperto ed in tal caso il vocabolario viene investigato in tale direzione in modo completo. | 
-^  **<nowiki>^</nowiki>**  | Range esclusivo. Entrambe gli estremi indicati sono esclusi dai  termini da ricercare. Esso si estende quindi dal primo termine superiore all'estremo inferiore sino all'ultimo termine inferiore l'estremo superiore. Anche in questo caso il range può essere aperto e palesemente l'estensione nella direzione dell'estremo non espresso ha luogo comunque in modo completo.| 
-^  **!**  | Range negativo. I termini espressi come estremi vengono esclusi dalla selezione così come tutti i termini che ricadono tra di essi. In sostanza è una sorta di negazione del range inclusivo. Usarlo senza esprimere entrambe gli estremi non ha molto senso((La cosa può essere ottenuta in modo più efficiente usando con un range aperto uno dei due casi precedenti)) ed anche se si intende escludere un solo termine, il range deve indicare tale termine tanto come estremo inferiore quanto come estremo superiore. | 
-^  **<**  | Range esclusivo a sinistra. Da utilizzarsi, ovviamente, indicando entrambe gli estremi((Altrimenti tanto vale usare uno dei precedenti casi con un range aperto)). In questo caso l'estremo di sinistra ovvero l'estremo inferiore viene escluso dal range mentre quello di destra, ovvero quello superiore, viene incluso nel range. | 
-^  **>**  | Range esclusivo a destra. E' l'esatto opposto del caso precedente. Da utilizzarsi, ovviamente, indicando entrambe gli estremi((Altrimenti tanto vale usare uno dei precedenti casi con un range aperto)). In questo caso l'estremo di sinistra ovvero l'estremo inferiore viene incluso nel range mentre quello di destra, ovvero quello superiore, viene escluso dal range.  | 
- 
-===== Le sintassi speciali ===== 
- 
-Si intendono sintassi speciali quelle che sono state derivate dalla sintassi di base dei range per assolvere ad altre finalità pur avvalendosi della stessa logica e quindi producendo come risultato finale un'estensione di uno o più termini da usare dinamicamente con altre condizioni di ricerca come, ad esempio, un'adiacenza. 
- 
-Ci sono solo due casi attualmente sviluppati: la ricerca per lista di termini e la ricerca per proiezione. 
- 
-La ricerca per **lista di termini** prevede una sintassi in cui l'identificatore di tipo di range è la virgola (,). Essa viene usata per separare termini da porre tutti in OR tra di loro. Avremo quindi una forma come la seguente\\  
-<color brown>[campo]=</color>**{**<color green>term1</color><color red>,</color><color green>term2</color><color red>,</color><color green>term3</color><color red>,</color><color green>term4</color><color red>,</color>...<color green>termN</color>**}** 
- 
-|**Nota:** In corrispondenza dell'emissione del server 22.1.3.5 tale sintassi è stata ampliata consentendo anche che l'elenco dei termini sia composto, di fatto, da un termine solo come nell'esempio che segue\\ <color brown>[campo]=</color>**{**<color green>term1</color>**}**\\ Tale sintassi non ha molto senso((Richiede un lavoro inutile)) ed equivale pressoché in tutto alla sintassi\\ <color brown>[campo]=</color><color green>term1</color> | 
- 
-La ricerca per proiezione 
/data/attic/documentazione_3di/extraway/range.1278088672.txt.gz · Ultima modifica: (modifica esterna)