Consultas en valores de campos de metadatos administrados
Última modificación: jueves, 15 de abril de 2010
Hace referencia a: SharePoint Server 2010
En este artículo
Consultas CAML
Consultas de búsqueda
Ejemplos
En Microsoft SharePoint Server 2010, debe tener cuidado al construir consultas diseñadas para devolver resultados que representen elementos que han sido etiquetados con valores en una columna de metadatos administrados. SharePoint Server 2010 admite la devolución de valores de metadatos con ámbito o sin ámbito de la base de datos TermStore, independientemente de si se escribe una consulta Lenguaje de marcado de la aplicación de colaboración (CAML) y se usa una API (como el objeto SPQuery) para obtener los elementos desde una lista específica, o si se usa una API (como Query) para ejecutar consultas de búsqueda.
Consultas CAML
Al escribir una consulta Lenguaje de marcado de la aplicación de colaboración (CAML) para devolver elementos de un objeto SPList etiquetados con un valor específico en una columna de metadatos administrados, debe especificar el identificador de búsqueda del término que desea comparar. Los identificadores de búsqueda son específicos de la colección de sitios; un término especificado tiene un identificador de búsqueda diferente para cada colección de sitios donde se usa el término. Para obtener el identificador de búsqueda de un término, puede usar el método GetWssIdsOfKeywordTerm(). O bien, puede usar el método GetWssIdsOfKeywordTerm() si el término es una palabra clave (si la propiedad IsKeyword del término está establecida en true). En ciertos escenarios, un solo término puede tener varios identificadores de búsqueda para la misma colección de sitios; por ejemplo, un término combinado tiene un identificador de búsqueda para cada término que se ha usado en la colección de sitios y se ha combinado en un solo término más adelante. Una vez encontrados los identificadores de búsqueda de un término, puede combinarlos en una cláusula IN de una consulta Lenguaje de marcado de la aplicación de colaboración (CAML) para consultar los elementos etiquetados con ese término. A continuación se muestra una consulta Lenguaje de marcado de la aplicación de colaboración (CAML) que consulta elementos de una lista que tienen los identificadores de búsqueda 14 y 15 en el campo ItemType.
<Query><Where><In><FieldRef LookupId="TRUE" Name="ItemType" /><Values><Value Type="Integer">14</Value><Value Type="Integer">15</Value></Where></Query>
Puede generar consultas que incluyan identificadores de búsqueda para varios términos. Una tarea común consiste en generar una consulta que obtenga elementos etiquetados con un término especificado o cualquiera de los términos descendientes de dicho término. Al pasar true al parámetro bool includeDescendants para TaxonomyField.GetWssIdsOfKeywordTerm, obtendrá los identificadores de búsqueda del término con el GUID especificado y los identificadores de todos sus términos secundarios.
Consultas de búsqueda
La búsqueda crea automáticamente propiedades indizadas que corresponden a campos de metadatos administrados que facilitan las consultas de búsqueda de elementos etiquetados con valores de metadatos administrados específicos, como se detalla en la Tabla 1.
Tabla 1. Propiedades de la consulta de búsqueda
Property |
Descripción |
---|---|
ows_tax_idFieldName |
Indiza los identificadores de los términos del campo FieldName, para cada elemento rastreado. Se asigna a la propiedad administrada owsTaxIdFieldName, que permite consultar elementos rastreados etiquetados en ese campo con un término que tenga el identificador de término especificado. |
ows_FieldName |
Indiza las etiquetas de los términos del campo FieldName, para cada elemento rastreado. Aquí solo se incluye la etiqueta del término usada para etiquetar el elemento; las etiquetas alternativas no se indizan. |
ows_taxid_MetadataAllTagsInfo |
Indiza los identificadores de todos los términos, para cada elemento rastreado, en todos sus campos de metadatos. Esta propiedad se asigna a la propiedad administrada owsTaxIdMetadataAllTagsInfo, que permite consultar los elementos rastreados etiquetados en cualquier campo con un término que tenga un identificador de término especificado. |
owsMetadataFacetInfo |
Esta propiedad recuperable mantiene una estructura de datos que contiene información acerca de todos los términos de un elemento en todos los campos de metadatos. A continuación, se muestra el formato de esta estructura de datos: ColmunInternalName|ColumnDisplayName|CompressedGuid(StoreId)|CompressedGuid(TermSetId)|CompressedGuid(TermId)|CurrentLabel;# |
Ejemplos
En los ejemplos enumerados en la Tabla 2 se muestran cadenas de consultas de búsqueda que buscan elementos que contienen la palabra clave tortuga y que también están etiquetados con una combinación de campo y valor específica.
Tabla 2. Cadenas de consultas de búsqueda de ejemplo
Ejemplo |
Cadena de consulta |
Notas |
---|---|---|
Un solo término, materiales de referencia, en el campo ItemType: |
http://contoso/searchcenter/pages/results.aspx?k=tortuga&r="owstaxIdItemType"=#052263385-1fc3-4323-8d6b-50c8f6c3c45d:"materiales de referencia” |
#0 en la cadena de consulta antes del identificador de término significa que se consultará solo el identificador de término especificado. |
El término materiales de referencia o cualquiera de sus términos descendientes en el campo ItemType: |
http://contoso/searchcenter/pages/results.aspx?k= tortuga &r="owstaxIdItemType"=#52263385-1fc3-4323-8d6b-50c8f6c3c45d:"materiales de referencia" |
# antes del identificador de término significa que se consultará el identificador de término especificado o el identificador de cualquiera de los términos secundarios de dicho término. |
Un solo término en cualquiera de sus campos: |
http://contoso/searchcenter/pages/results.aspx?k= tortuga &r=owstaxIdMetadataAllTagsInfo=#052263385-1fc3-4323-8d6b-50c8f6c3c45d:"materiales de referencia" |
En el siguiente ejemplo de código se demuestra cómo consultar en valores de campos de metadatos.
using System;
using System.IO;
using System.Globalization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Taxonomy;
namespace Microsoft.SDK.SharePointServer.Samples
{
// We are trying to get all the Wss IDs of this term when used as a keyword.
int[] wssIds = TaxonomyField.GetWssIdsOfKeywordTerm(site, term.Id, 500);
Console.Write("The wss ID's of your term are");
if (wssIds.Length == 0)
{
Console.Write(" empty");
}
else
{
foreach (int wssId in wssIds)
{
Console.WriteLine(" " + wssId.ToString());
}
}
Console.WriteLine(".");
}
/// <summary>
/// This method writes to the console the Wss ID values of the managed metadata term
/// on the specified SPSite.
/// </summary>
private void TestGetWssIdsOfTerm(SPSite site, Term term)
{
if (term == null)
{
throw new ArgumentException("Parameter term cannot be null");
}
if (site == null)
{
throw new ArgumentException("Parameter site cannot be null");
}
// We are trying to get all the Wss IDs of this term without its children.
int[] wssIds = TaxonomyField.GetWssIdsOfTerm(site, term.TermStore.Id, term.TermSet.Id, term.Id, false /*includeDescendants*/, 500);
Console.Write("The wss ID's of your term are");
if (wssIds.Length == 0)
{
Console.Write(" empty");
}
else
{
foreach (int wssId in wssIds)
{
Console.Write(" " + wssId.ToString());
}
}
Console.WriteLine(".");
}
}
}