ALTER SEARCH PROPERTY LIST (Transact-SQL)

Aggiunge una proprietà di ricerca specificata o la elimina dall'elenco delle proprietà di ricerca specificato.

Nota importanteImportante

Le istruzioni CREATE SEARCH PROPERTY LIST, ALTER SEARCH PROPERTY LIST e DROP SEARCH PROPERTY LIST sono supportate solo con il livello di compatibilità 110. Con livelli di compatibilità inferiori, queste istruzioni non sono supportate.

Sintassi

ALTER SEARCH PROPERTY LIST list_name
{
   ADD 'property_name'
     WITH 
      ( 
          PROPERTY_SET_GUID = 'property_set_guid'
        , PROPERTY_INT_ID = property_int_id
      [ , PROPERTY_DESCRIPTION = 'property_description' ]
      )
 | DROP 'property_name' 
}
;

Argomenti

  • list_name
    Nome dell'elenco di proprietà da modificare. list_name è un identificatore.

    Per visualizzare i nomi degli elenchi delle proprietà esistenti, utilizzare la vista del catalogo sys.registered_search_property_lists, come illustrato di seguito:

    SELECT name FROM sys.registered_search_property_lists;
    
  • ADD
    Aggiunge una proprietà di ricerca specificata all'elenco delle proprietà specificato da list_name. La proprietà è registrata per l'elenco delle proprietà di ricerca. Prima di utilizzare le proprietà appena aggiunte per la ricerca di proprietà, è necessario ripopolare l'indice o gli indici full-text associati. Per ulteriori informazioni, vedere ALTER FULLTEXT INDEX (Transact-SQL).

    [!NOTA]

    Per aggiungere una proprietà di ricerca specificata a un elenco delle proprietà di ricerca, è necessario fornire i relativi ID int (property_int_id) e GUID del set di proprietà (property_set_guid). Per ulteriori informazioni, vedere Acquisizione di identificatori e GUID del set di proprietà" più avanti in questo argomento.

  • property_name
    Specifica il nome da utilizzare per identificare la proprietà nelle query full-text. property_name deve identificare in modo univoco la proprietà all'interno del set di proprietà. Un nome di proprietà può contenere spazi interni. La lunghezza massima di property_name è di 256 caratteri. Questo nome può essere un nome descrittivo, ad esempio autore o indirizzo abitazione, oppure il nome canonico Windows della proprietà, ad esempio System.Author o System.Contact.HomeAddress.

    Gli sviluppatori dovranno utilizzare il valore specificato per property_name per identificare la proprietà nel predicato CONTAINS. Pertanto, quando si aggiunge una proprietà è importante specificare un valore che rappresenti in modo significativo la proprietà definita dal GUID del set di proprietà specificato (property_set_guid) e l'identificatore di proprietà (property_int_id). Per ulteriori informazioni sui nomi di proprietà, vedere la sezione "Osservazioni" più avanti in questo argomento.

    Per visualizzare i nomi di proprietà attualmente presenti in un elenco delle proprietà di ricerca del database corrente, utilizzare la vista del catalogo sys.registered_search_properties come segue:

    SELECT property_name FROM sys.registered_search_properties;
    
  • PROPERTY_SET_GUID ='property_set_guid'
    Specifica l'identificatore del set di proprietà a cui appartiene la proprietà. Si tratta di un identificatore univoco globale (GUID, Globally Unique Identifier). Per informazioni sull'acquisizione di questo valore, vedere la sezione "Osservazioni" più avanti in questo argomento.

    Per visualizzare il GUID del set di proprietà di qualsiasi proprietà presente in un elenco delle proprietà di ricerca del database corrente, utilizzare la vista del catalogo sys.registered_search_properties, come illustrato di seguito:

    SELECT property_set_guid FROM sys.registered_search_properties;
    
  • PROPERTY_INT_ID =property_int_id
    Specifica il numero intero che identifica la proprietà all'interno del set di proprietà. Per informazioni sull'acquisizione di questo valore, vedere la sezione "Osservazioni".

    Per visualizzare l'identificatore intero di qualsiasi proprietà presente in un elenco delle proprietà di ricerca del database corrente, utilizzare la vista del catalogo sys.registered_search_properties, come illustrato di seguito:

    SELECT property_int_id FROM sys.registered_search_properties;
    

    [!NOTA]

    Una combinazione specificata di property_set_guid e property_int_id deve essere univoca in un elenco delle proprietà di ricerca. Se si tenta di aggiungere una combinazione esistente, l'operazione ALTER SEARCH PROPERTY ha esito negativo e viene restituito un errore. Ciò significa che è possibile definire un solo nome per una proprietà specificata.

  • PROPERTY_DESCRIPTION ='property_description'
    Specifica una descrizione della proprietà definita dall'utente. property_description è una stringa composta da un massimo di 512 caratteri. Questa opzione è facoltativa.

  • DROP
    Elimina la proprietà specificata dall'elenco delle proprietà specificato da list_name. L'eliminazione di una proprietà ne annulla la registrazione, pertanto non è più possibile effettuare ricerche che la riguardino.

Osservazioni

Ogni indice full-text può disporre di un solo elenco delle proprietà di ricerca.

Per consentire l'esecuzione di query su una proprietà di ricerca specificata, è necessario aggiungerla all'elenco delle proprietà di ricerca dell'indice full-text, quindi ripopolare l'indice.

Quando si specifica una proprietà è possibile disporre le clausole PROPERTY_SET_GUID, PROPERTY_INT_ID e PROPERTY_DESCRIPTION in qualsiasi ordine, come elenco delimitato da virgole tra parentesi, ad esempio:

ALTER SEARCH PROPERTY LIST CVitaProperties
ADD 'System.Author' 
WITH ( 
      PROPERTY_DESCRIPTION = 'Author or authors of a given document.',
      PROPERTY_SET_GUID   = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', 
      PROPERTY_INT_ID = 4 
      );

[!NOTA]

In questo esempio viene utilizzato il nome della proprietà, System.Author, che è simile al concetto dei nomi di proprietà canonici introdotti in Windows Vista (nome canonico di Windows).

Acquisizione dei valori delle proprietà

La ricerca full-text esegue il mapping di una proprietà di ricerca a un indice full-text tramite il GUID del relativo set di proprietà e l'ID di tipo Integer della proprietà. Per informazioni sull'acquisizione di 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.

Ricerca delle proprietà aggiunte

L'aggiunta di una proprietà di ricerca a un elenco delle proprietà di ricerca ne comporta la registrazione. È possibile specificare immediatamente nelle query CONTAINS una proprietà appena aggiunta. Tuttavia, le query full-text con ambito proprietà su una proprietà appena aggiunta non restituiscono documenti finché l'indice full-text associato non viene ripopolato. Ad esempio, la query con ambito proprietà seguente eseguita su una proprietà appena aggiunta, new_search_property non restituisce documenti finché l'indice full-text associato alla tabella di destinazione (table_name) non viene ripopolato:

SELECT column_name FROM table_name WHERE CONTAINS( PROPERTY( column_name, 'new_search_property' ), 'contains_search_condition');
GO 

Per avviare un popolamento completo, utilizzare l'istruzione ALTER FULLTEXT INDEX (Transact-SQL) seguente:

USE database_name;
GO
ALTER FULLTEXT INDEX ON table_name START FULL POPULATION;
GO

[!NOTA]

Il ripopolamento non è necessario dopo l'eliminazione di una proprietà da un elenco di proprietà, perché solo le proprietà che rimangono nell'elenco delle proprietà di ricerca sono disponibili per le query full-text.

Riferimenti correlati

Per creare un elenco di proprietà

Per eliminare un elenco di proprietà

Per aggiungere o rimuovere un elenco di proprietà in un indice full-text

Per eseguire un popolamento in un indice full-text

Autorizzazioni

È necessario disporre dell'autorizzazione CONTROL per l'elenco di proprietà.

Esempi

A.Aggiunta di una proprietà

Nell'esempio seguente vengono aggiunte diverse proprietà (Title, Author e Tags) a un elenco delle proprietà denominato DocumentPropertyList.

[!NOTA]

Per un esempio della creazione dell'elenco delle proprietà DocumentPropertyList, vedere CREATE SEARCH PROPERTY LIST (Transact-SQL).

ALTER SEARCH PROPERTY LIST DocumentPropertyList
   ADD 'Title' 
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 2, 
      PROPERTY_DESCRIPTION = 'System.Title - Title of the item.' );

ALTER SEARCH PROPERTY LIST DocumentPropertyList 
    ADD 'Author'
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 4, 
      PROPERTY_DESCRIPTION = 'System.Author - Author or authors of the item.' );

ALTER SEARCH PROPERTY LIST DocumentPropertyList 
    ADD 'Tags'
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 5, 
      PROPERTY_DESCRIPTION = 'System.Keywords - Set of keywords (also known as tags) assigned to the item.' );

[!NOTA]

È necessario associare un elenco delle proprietà di ricerca specificato a un indice full-text prima di utilizzarlo per query con ambito proprietà. A tale scopo, utilizzare un'istruzione ALTER FULLTEXT INDEX e specificare la clausola SET SEARCH PROPERTY LIST.

B.Eliminazione di una proprietà

Nell'esempio seguente viene eliminata la proprietà Comments dall'elenco delle proprietà DocumentPropertyList.

ALTER SEARCH PROPERTY LIST DocumentPropertyList
DROP 'Comments' ;

Vedere anche

Riferimento

CREATE SEARCH PROPERTY LIST (Transact-SQL)

DROP SEARCH PROPERTY LIST (Transact-SQL)

sys.registered_search_properties (Transact-SQL)

sys.registered_search_property_lists (Transact-SQL)

sys.dm_fts_index_keywords_by_property (Transact-SQL)

Concetti

Eseguire ricerche nelle proprietà dei documenti con elenchi delle proprietà di ricerca

Trovare GUID del set di proprietà e ID di tipo integer delle proprietà per le proprietà di ricerca