Cerca le proprietà dei documenti utilizzando gli elenchi delle proprietà di ricerca
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
In passato non era possibile distinguere il contenuto delle proprietà del documento dal contenuto del corpo del documento. Ciò limitava le query full-text a ricerche generiche in documenti interi. Attualmente, invece, è possibile configurare un indice full-text per supportare la ricerca con ambito proprietà di particolari proprietà, ad esempio Author e Title, per tipi di documenti supportati in una colonna di dati binari varbinary, varbinary(max) (incluso FILESTREAM) o image . Questa modalità di ricerca è nota come ricerca basata su proprietà.
La possibilità di usare la ricerca basata su proprietà in un tipo specifico di documento è determinata dal filtro (IFilter) associato. Per alcuni tipi di documento, il filtro IFilter associato estrae alcune o tutte le proprietà definite per quel tipo di documento, nonché il contenuto del corpo del documento. È possibile configurare un indice a testo completo per supportare la ricerca di proprietà solo su proprietà estratte da un IFilter durante l'indicizzazione a testo completo. I filtri IFilter in grado di estrarre alcune proprietà del documento comprendono i filtri IFilter per tipi di documento di Microsoft Office, ad esempio docx, xlsx e pptx. D'altra parte, il filtro IFilter XML non genera proprietà.
Modalità di funzionamento della ricerca full-text con le proprietà di ricerca
ID di proprietà interni
Il Motore Full-Text assegna arbitrariamente un ID interno a ogni proprietà registrata, identificando univocamente la proprietà nell'elenco di ricerca specifico di cui fa parte. Pertanto, se una proprietà viene aggiunta a più elenchi di proprietà di ricerca, è probabile che l'ID di proprietà interno sia diverso nei diversi elenchi.
Quando si registra una proprietà per un elenco di ricerca, a tale proprietà viene arbitrariamente assegnato un ID di proprietà interno da parte del motore di ricerca full-text. L'ID di proprietà interno è un valore di tipo integer che identifica in modo univoco la proprietà in tale elenco di proprietà di ricerca.
Nella figura seguente viene illustrata una vista logica di un elenco di proprietà di ricerca in cui sono specificate due proprietà, Title e Keywords. Il nome dell'elenco di proprietà per Keywords è "Tags". Queste proprietà appartengono allo stesso set di proprietà il cui GUID è F29F85E0-4FF9-1068-AB91-08002B27B3D9. Gli identificatori di tipo integer della proprietà sono 2 per Title e 5 per Tags (Keywords). Il motore Full-Text assegna arbitrariamente ogni proprietà a un ID di proprietà interno univoco per l'elenco di proprietà di ricerca. L'ID di proprietà interno per la proprietà Title è 1, mentre per la proprietà Tags è 2.
È probabile che l'ID di proprietà interno sia diverso dall'identificatore intero della proprietà. Se una determinata proprietà viene registrata in più elenchi di proprietà di ricerca, è possibile che a ciascun elenco di proprietà di ricerca venga assegnato un ID di proprietà interno. L'ID di proprietà interno potrebbe essere, ad esempio, 4 in un elenco di proprietà di ricerca, 1 in un altro, 3 in un altro ancora e così via. Al contrario, l'identificatore di tipo integer della proprietà è intrinseco della proprietà stessa e rimane uguale ovunque venga utilizzata la proprietà.
Indicizzazione di proprietà registrate
Dopo l'associazione di un indice full-text a un elenco di proprietà di ricerca, è necessario ripopolare l'indice per indicizzare i termini di ricerca specifici della proprietà. Durante l'indicizzazione full-text, il contenuto di tutte le proprietà viene archiviato nell'indice full-text insieme ad altro contenuto. Quando tuttavia si indicizza un termine di ricerca trovato in una proprietà registrata, tramite l'indicizzatore full-text viene archiviato insieme al termine anche il corrispondente ID di proprietà interno. Al contrario, se una proprietà non è registrata, viene archiviata nell'indice full-text come se fosse parte del corpo del documento e il valore dell'ID di proprietà interno sarà pari a zero.
Nella figura seguente viene illustrata una vista logica di come vengono visualizzati i termini di ricerca in un indice full-text associato all'elenco di proprietà di ricerca illustrato nella figura precedente. Un documento di esempio, Document 1, contiene tre proprietà, ovvero Title, Author e Keywords, oltre al corpo del documento. Per le proprietà Titolo e Parole chiave, specificate nell'elenco di proprietà di ricerca, i termini di ricerca sono associati ai corrispondenti ID di proprietà interni nell'indice a testo pieno. Al contrario, il contenuto della proprietà Author viene indicizzato come se fosse parte del corpo del documento. Ciò significa che la registrazione di una proprietà aumenta le dimensioni dell'indice full-text, a seconda della quantità di contenuto archiviata nella proprietà.
I termini di ricerca nella proprietà Title, ovvero "Favorite," "Biking" e "Trails", sono associati all'ID di proprietà interno 1 assegnato a Title per questo indice. I termini di ricerca nella proprietà Keywords, ovvero "biking" e "mountain", sono associati all'ID di proprietà interno 2 assegnato a Tags per questo indice. Per i termini di ricerca nella proprietà Author, ovvero "Jane" e "Doe", e per i termini di ricerca nel corpo del documento, l'ID di proprietà interno è 0. Il termine "biking" è presente nella proprietà Title, nella proprietà Keywords (Tags) e nel corpo del documento. Nei risultati di una ricerca delle proprietà con il termine "biking" nella proprietà Titolo o Parole chiave (Tag) verrà restituito questo documento. Anche una query full-text generica per "biking" restituirebbe questo documento, come se l'indice non fosse stato configurato per la ricerca basata su proprietà. Questo documento non verrà restituito da una ricerca di proprietà per "biking" sulla proprietà Author.
In una query full-text limitata alle proprietà vengono utilizzati gli ID di proprietà interni registrati per l'elenco corrente delle proprietà di ricerca dell'indice full-text.
Impatto dell'abilitazione della ricerca basata su proprietà
La configurazione di un indice full-text per supportare la ricerca basata su una o più proprietà aumenta le dimensioni dell'indice, a seconda del numero di proprietà specificate nell'elenco di proprietà di ricerca e del contenuto di ogni proprietà.
Per l'esecuzione di test di corpi tipici di documenti di Microsoft Word, Excel e PowerPoint, è stato configurato un indice full-text per indicizzare le proprietà di ricerca più comuni. L'indicizzazione di queste proprietà ha comportato l'aumento delle dimensioni dell'indice full-text di circa il 5%. Si prevede che tale aumento approssimativo delle dimensioni caratterizzerà la maggior parte dei corpi di documento. In ultima analisi l'aumento delle dimensioni dipenderà, tuttavia, dalla quantità di dati della proprietà nel corpo di un determinato documento rispetto alla quantità di dati complessivi.
Creazione di un elenco di attributi di ricerca e abilitazione della ricerca per attributi
Creazione di un elenco di proprietà di ricerca
Per creare un elenco di proprietà di ricerca con Transact-SQL
Usa l'istruzione CREATE SEARCH PROPERTY LIST (Transact-SQL) e fornisci almeno un nome per l'elenco.
Per creare un elenco di proprietà di ricerca in Management Studio
In Esplora oggetti, espandere il server.
Espandi Database, quindi espandi il database per creare l'elenco di proprietà di ricerca.
Espandi Archiviazione, quindi fare clic con il pulsante destro del mouse su Elenchi di proprietà di ricerca.
Selezionare Nuovo elenco di proprietà di ricerca.
Specificare il nome dell'elenco di proprietà.
Facoltativamente, specificare un altro utente come proprietario dell'elenco di proprietà.
Selezionare una delle seguenti opzioni:
Crea un elenco di proprietà di ricerca vuoto
Crea da un elenco di proprietà di ricerca esistente
Per altre informazioni, vedere Nuovo elenco di proprietà di ricerca.
Seleziona OK.
Aggiunta di proprietà a un elenco di proprietà di ricerca
La ricerca basata su proprietà richiede la creazione di un elenco di proprietà di ricerca e l'indicazione di una o più proprietà in cui è possibile eseguire la ricerca. Quando si aggiunge una proprietà a un elenco di proprietà di ricerca, la proprietà viene registrata per quel particolare elenco. Per aggiungere una proprietà a un elenco di proprietà di ricerca sono necessari i valori seguenti:
Set di proprietà GUID
Ogni proprietà di ricerca appartiene al singolo set di proprietà che contiene un gruppo di proprietà correlate. Ogni set di proprietà viene identificato da un identificatore univoco globale (GUID).
Identificatore di tipo integer della proprietà
Ogni proprietà di ricerca possiede un identificatore univoco all'interno del set di proprietà. Per una determinata proprietà, l'identificatore può essere un tipo integer o una stringa, tuttavia la ricerca full-text supporta solo identificatori di tipo integer.
Nome della proprietà
Questo è il nome che gli utenti specificheranno nelle query full-text per cercare nella proprietà. Un nome di proprietà può contenere spazi interni. La lunghezza massima consentita è di 256 caratteri.
Il nome di proprietà può essere uno dei seguenti:
Il nome canonico Windows della proprietà, come System. Author o System.Contact.HomeAddress.
Un nome intuitivo e facile da ricordare per i tuoi utenti. Alcune proprietà sono associate a un nome descrittivo noto, ad esempio "Autore" o "Indirizzo abitazione", ma è possibile specificare qualsiasi nome appropriato per gli utenti.
Nota
Una determinata combinazione di GUID del set di proprietà e di identificatore di proprietà deve essere univoca in una determinata lista delle proprietà di ricerca. Ciò significa che non è possibile aggiungere la stessa proprietà più di una volta con diversi nomi o descrizioni.
Descrizione (facoltativo)
Quando si aggiunge una proprietà di ricerca a un elenco di proprietà di ricerca, è possibile fornire una descrizione facoltativa. Ad esempio, includere informazioni su una proprietà che non è possibile dedurre dal nome o descrivere il set di proprietà della proprietà stessa.
Per ottenere valori per un elenco di proprietà di ricerca
Vedi Trovare i GUID dei set di proprietà e gli ID interi delle proprietà per la ricerca.
Per aggiungere una proprietà a un elenco di proprietà di ricerca con Transact-SQL
Usa l'istruzione ALTER SEARCH PROPERTY LIST (Transact-SQL) con i valori ottenuti mediante uno dei metodi descritti nell'articolo Trovare GUID del set di proprietà e ID di tipo integer delle proprietà per le proprietà di ricerca.
Nell'esempio seguente viene illustrato l'utilizzo di questi valori in caso di aggiunta di una proprietà a un elenco di proprietà di ricerca:
ALTER SEARCH PROPERTY LIST DocumentTablePropertyList
ADD 'Title'
WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 2,
PROPERTY_DESCRIPTION = 'System.Title - Title of the item.' );
Per aggiungere una proprietà a un elenco di proprietà di ricerca in Management Studio
Utilizzare la finestra di dialogo Elenco delle Proprietà di Ricerca per aggiungere e rimuovere proprietà di ricerca. È possibile trovare Elenchi di proprietà di ricerca in Esplora oggetti nel nodo Archiviazione del database associato.
Associare un elenco di proprietà di ricerca a un indice di testo completo
Perché un indice full-text supporti la ricerca sulle proprietà registrate in un elenco di proprietà di ricerca, è necessario associare l'elenco all'indice e poi ripopolare quest'ultimo. Il ripopolamento dell'indice full-text consente di creare voci di indice specifiche della proprietà per i termini di ricerca in ognuna delle proprietà registrate.
Finché l'indice full-text rimane associato a tale elenco di proprietà di ricerca, nelle query full-text potrà essere utilizzata l'opzione PROPERTY del predicato CONTAINS per la ricerca basata su proprietà registrate per tale elenco di proprietà di ricerca.
Se si modifica l'elenco di proprietà di ricerca associato a un indice full-text, sarà necessario ricompilare l'indice per ripristinarne lo stato coerente. L'indice viene troncato immediatamente e rimane vuoto fino al termine del popolamento completo. Per altre informazioni sul caso in cui la modifica dell'elenco di proprietà di ricerca provoca la ricompilazione dell'indice, vedi la sezione "Commenti" in ALTER FULLTEXT INDEX (Transact-SQL).
Per associare un elenco di proprietà di ricerca a un indice full-text con Transact-SQL:
Usa l'istruzione ALTER FULLTEXT INDEX (Transact-SQL) con la clausola SET SEARCH PROPERTY LIST = <property_list_name>
.
Per associare un elenco di proprietà di ricerca a un indice full-text con Management Studio
Specificare un valore per Elenco delle proprietà di ricerca nella scheda Generale della finestra di dialogo Proprietà di indicizzazione full-text.
Interrogazione delle proprietà di ricerca con CONTAINS
Di seguito è riportata la sintassi di base di CONTAINS per una query full-text con ambito proprietà:
SELECT column_name FROM table_name
WHERE CONTAINS ( PROPERTY ( column_name, 'property_name' ), '<contains_search_condition>' )
La query seguente, ad esempio, esegue la ricerca di una proprietà indicizzata, Title
, nella colonna Document
della tabella Production.Document
del database AdventureWorks
. La query restituisce solo documenti la cui proprietà Title
contiene la stringa Maintenance
o Repair
USE AdventureWorks2022;
GO
SELECT Document FROM Production.Document
WHERE CONTAINS ( PROPERTY ( Document, 'Title' ), 'Maintenance OR Repair')
GO
Nell'esempio si presuppone che il filtro IFilter per il documento estragga la proprietà Title, che la proprietà Title venga aggiunta all'elenco di proprietà di ricerca e che tale elenco sia associato all'indice full-text.
Gestione degli elenchi di proprietà di ricerca
Visualizzazione e modifica di un elenco di proprietà di ricerca
Per modificare un elenco di proprietà di ricerca con Transact-SQL
Usa l'istruzione ALTER SEARCH PROPERTY LIST (Transact-SQL) per aggiungere o rimuovere proprietà di ricerca.
Per visualizzare e modificare un elenco di proprietà di ricerca in Management Studio
In Esplora oggetti, espandere il server.
Espandi Database, quindi espandi il database.
Espandi Archiviazione.
Espandi Elenchi di proprietà di ricerca per visualizzare gli elenchi di proprietà di ricerca.
Fare clic con il pulsante destro del mouse sull'elenco di proprietà, quindi scegliere Proprietà.
Nella finestra di dialogo dell' editor dell'elenco delle proprietà di ricerca usare la griglia Proprietà per aggiungere o rimuovere proprietà di ricerca:
Per rimuovere una proprietà del documento, fare clic sull'intestazione di riga a sinistra della proprietà e premere CANC.
Per aggiungere una proprietà del documento, fare clic nella riga vuota nella parte inferiore dell'elenco, a destra di *, quindi immette i valori per la nuova proprietà.
Per informazioni su questi valori, vedere Editor dell'elenco delle proprietà di ricerca. Per informazioni su come ottenere questi valori per le proprietà definite da Microsoft, vedere Trovare GUID del set di proprietà e ID di tipo integer delle proprietà per le proprietà di ricerca. Per informazioni sulle proprietà definite da un fornitore di software indipendente (ISV, Independent Software Vendor), vedere la documentazione di tale fornitore.
Seleziona OK.
Eliminazione di un elenco di proprietà di ricerca
Non è possibile eliminare un elenco di proprietà da un database se l'elenco è associato a un indice full-text.
Per eliminare un elenco di proprietà di ricerca con Transact-SQL
Usa l'istruzione DROP SEARCH PROPERTY LIST (Transact-SQL).
Per eliminare un elenco di proprietà di ricerca in Management Studio
In l'Esplora oggetti, espandere il server.
Espandi Database, quindi espandi il database.
Espandi Archiviazione, quindi espandi il nodo Elenchi di proprietà di ricerca.
Fare clic con il pulsante destro del mouse sull'elenco di proprietà che si desidera eliminare, quindi scegliere Elimina.
Seleziona OK.
Vedi anche
Trovare i GUID dei set di proprietà e gli ID numerici delle proprietà per la ricerca
Configurare e gestire filtri per la ricerca