Ricerca globale e suo comportamento

Nell'ambito della ricerca globale che può essere evocata in HighWay si ricorda una sostanziale differenza tra l'AND di Campo e l'AND di Documento.

Il primo, evocato privando la frase di ricerca di qualsiasi riferimento ai campi o alla chiocciola, sta cadendo in disuso anche perché comporta una restrizione dell'esito della selezione non indifferente.
E' nell'uso comune la seconda modalità.

Nota:
Riferimenti RightWay:
  • RW0019481

Novità nell'uso della ricerca globale

Come sinteticamente detto in precedenza, la ricerca globale si compie, prevalentemente, cercando sul canale detto chiocciola. Essa può essere effettuata nello stesso modo delle altre ricerche ed usufruisce dei modificatori globali (Modificatori Globali della ricerca) della selezione ma non di quelli specifici (Modificatori dei singoli Canali di ricerca).
Ne consegue che l'uso degli opratori logici darà, su questo canale composito, gli stessi frutti ottenibili cercando singolarmente sugli altri canali con l'unica eccezione rappresentata dall'AND di documento (descritto opportunamente anche in SearchSTring_GlobalModif).
La ricerca su tutti i canali dell'archivio dipende da come è stato configurato il campo chiocciola. Se ad esso non è stato fatto corrispondere alcun alias nel file di configurazione dell'archivio, l'estensione viene automaticamente applicata a tutti i canali identificati, sia che si tratti di canali esplicitati nel file di configurazione, sia che si tratti di canali automaticamente identificati durante l'indicizzazione dei documenti (Vds. configurazione dell'archivio ed affini per comprendere la distinzione tra i due tipi di canali). Se invece nel file di configurazione sono stati indicati uno o più canali tutti associati all'alias chiocciola, l'estensione verrà applicata solo ad essi.

Avendo introdotto il concetto di Modificatori Globali (Modificatori Globali della ricerca) il più importante tra essi è senza dubbio il modificatore [?GLOBALDA] che consente il Global Document And, ovvero il trattamento dell'operatore AND da considerarsi applicato al docuento e non ai singoli canali. In questo modo un doucmento viene eletto se le componenti in AND sono tutte presenti anche se in canali diversi.

Andiamo per ordine. Cercando in qualsiasi canale...

[@]=bocconi OR milano

...selezioneremo i documenti che contengono in un qualsiasi campo uno dei due termini. Se invece selezioniamo...

[@]=bocconi AND milano

...solo i documenti che presentano i due termini nello stesso campo verranno selezionati. In fine, se selezioniamo...

[@]=bocconi milano

...allora i documenti validi non dovranno semplicemente avere questi due valori nello stesso campo ma essi dovranno essere anche adiacenti (in ordine o meno ed ad una distanza massima stabilita secondo i parametri con i quali viene svolta la selezione).

L'intenzione di avere tutti i documenti che presentino due termini (e non uno solo di essi) in qualsiasi campo si ottiene, come detto, con il parametro di ricerca [?GLOBALDA] che comporta il Global Document And. Esso si applica doverosamente al secondo caso esposto ma non al primo ne al terzo.
Il primo caso prevede un OR intenzionale quindi il Global Document And non vi trova applicazione. Il terzo, in sostanza, prevede un'adiacenza ben definita quindi non si applica il Global Document And neppure in questo caso in quanto non avrebbe senso parlare di adiacenza tra campi diversi (la posizione degli stessi nell'ambito del documento non dev'essere cosa nota a chi fa le selezioni). Rimane quindi il caso in cui l'operatore logico AND o E viene indicato espressamente. Ne consegue che, mentre la ricerca...

[@]=bocconi milano [?GLOBALDA]

...trova solo i documenti dove i due termini sono presenti nello stesso campo e sono prossimi l'uno all'altro, indipendentemente dalla presenza dai [?GLOBALDA], la ricerca ...

[@]=bocconi AND milano

...trova i documenti dove i due termini sono semplicemente presenti nello stesso campo. In ultimo la ricerca...

[@]=bocconi AND milano [?GLOBALDA]

...trova i documenti dove i due termini sono presenti ma in qualsiasi campo.

Ecco perché l'uso di [?GLOBALDA] può non condurre al risultato desiderato se compiuto in modo improprio.

Va detto che anche senza l'uso di [?GLOBALDA] le ricerche che esprimono l'operatore AND o non lo esprimono sottintendendo un'adiacenza danno risultati diversi quindi non c'è da sorprendersi che l'omissione dell'operatore AND abbia un peso anche con l'uso di [?GLOBALDA].

L'uso di un canale di ricerca globale

La ricerca appena descritta, ovvero la ricerca globale per campo chiocciola, si ottiene estendendo ad ogni canale identificato (tutti o un sottinsieme definito) la ricerca impostata con un possibile degrado prestazionale se i canali coinvolti e/o le chiavi in esame sono numerosi. Per ottenere un risulatto non solo equivalente ma anche molto più performante si può fare uso di una nuova modalità di configurazione dell'archivio che consente la creazione di un canale di ricerca ben preciso. Tale canale consiste nell'unione dei canali descritti è può essere anch'esso applicato a tutti i canali, ai soli canali espressamente indicati nel file di configurazione dell'archivio o ad un ulteriore sottoinsieme di canali.
Per ottenere il risultato voluto, però, si paga un degrado in termini di occupazione su disco fisso: i files .idx, .vcb e .ref possono giungere anche a divenire 2 volte più grandi rispetto alla modalità standard.

L'alimentazione di un canale globale interessa le singole unità informative per poter compiere selezioni già ristrette sul nascere (senza dover porre condizioni di "or") e limitando ai minimi termini le estensioni parallele al numero di diverse unità informative.

Viene generato un canale per ogni unità informativa avente la denominazione...

XML,/<ud_name>/#global

...ed essa può essere ottenuta in 3 modi:

  1. Indice globale per unità informativa senza limitazioni. L'indice viene creato per tutti i canali, espliciti ed impliciti. Si ottiene impostando a full il valore dell'attributo globalkey dell'elemento primary_node nel file di configurazione d'archivio.
  2. Indice globale per unità informativa con limitazioni. L'indice viene creato per i soli canali esplicitati e per nessun'altro. Volendo ottenere tale indice anche per canali che non sarebbe necessario esplicitare in quanto già ottenuti per default, si dovrà comunque procedere alla loro dichiarazione anche se priva di qualsiasi altra indicazione. Si ottiene impostando a yes il valore dell'attributo globalkey dell'elemento primary_node nel file di configurazione d'archivio.
  3. Indice globale per unità informativa solo su canali ben precisi. Prevede che l'attributo globalkey sia assente (o valorizzato a no che è il suo default) e che si abbia invece un'indicazione capillare per ogni chiave esplicitata che si vuol far convergere nel campo globale del valore yes dell'attributo global degli elementi key.

Va da se che la terza modalità ha ben poco senso se viene usata una delle precedenti che, di fatto, la sovrascrivono d'ufficio.

Il canale è indistinguibile da come esso è stato alimentato e fa convergere in se chiavi di ogni genere, a seconda del canale dal quale esse originano. Considerando che in esso convergono valori provenienti da canali mono, multi e double esso garantisce risultati in linea con quelli ottenibili con l'attuale campo chiocciola ed alimenta un vocabolario che può risultare piuttosto eterogeneo.

Nota:
Trattamento dei modificatori Si ricorda che al canale generato è possibile applicare modificatori di canale (Modificatori dei singoli Canali di ricerca) quindi se nel campo chiocciola si applica il modificatore generico [?GLOBALDA] nel campo generato con questa modalità l'AND è già di documento per natura ed applicando il modificatore...
[XML,/<ud_name/#global|(AdjIgnore)]=...

...si può disabilitare anche l'adiacenza.

Nota:
Riferimenti RightWay:
  • RW0029120
Date
2008/02/05 11:45:50

Torna a Indice delle voci


HighWay/eXtraWay Project - Frequently Asked Questions (Doxygen 1.6.1)