Freigeben über


Ausführen von Abfragen nach Werten in verwalteten Metadatenfeldern

Letzte Änderung: Donnerstag, 15. April 2010

Gilt für: SharePoint Server 2010

Inhalt dieses Artikels
CAML-Abfragen
Suchabfragen
Beispiele

In Microsoft SharePoint Server 2010 müssen Sie vorsichtig vorgehen, wenn Sie Abfragen erstellen, mit denen Ergebnisse für Elemente zurückgegeben werden sollen, die in einer verwalteten Metadatenspalte mit Werten gekennzeichnet waren. SharePoint Server 2010 unterstützt das Zurückgeben von Metadatenwerten mit und ohne Bereich aus der TermStore-Datenbank. Dabei spielt es keine Rolle, ob Sie eine Collaborative Application Markup Language (CAML)-Abfrage schreiben und eine Anwendungsprogrammierschnittstelle (Application Programming Interface, API) (wie z. B. das SPQuery-Objekt) zum Abrufen von Elementen aus einer bestimmten Liste oder aber eine API (z. B. Query) zum Ausführen von Suchabfragen verwenden.

CAML-Abfragen

Beim Erstellen einer Collaborative Application Markup Language (CAML)-Abfrage zum Zurückgeben von Elementen aus einem SPList-Objekt, die in einer verwalteten Metadatenspalte mit einem bestimmten Wert gekennzeichnet sind, müssen Sie die Nachschlage-ID der Suchbegriffs angeben. Nachschlage-IDs sind websitesammlungsspezifisch. Ein angegebener Ausdruck weist nämlich für jede Websitesammlung, in der dieser Ausdruck verwendet wird, eine andere Nachschlage-ID auf. Mit der GetWssIdsOfKeywordTerm()-Methode können Sie die Nachschlage-ID für einen Ausdruck abrufen. Sie können aber auch die GetWssIdsOfKeywordTerm()-Methode verwenden, falls der Ausdruck ein Schlüsselwort ist (falls die IsKeyword-Eigenschaft des Ausdrucks auf true festgelegt ist). In bestimmten Szenarien kann ein einzelner Ausdruck mehrere Nachschlage-IDs für dieselbe Websitesammlung aufweisen. Beispielsweise weist ein zusammengeführter Ausdruck eine Nachschlage-ID für jeden Ausdruck auf, der in der Websitesammlung verwendet und später zu einem einzigen Ausdruck zusammengeführt wurde. Nachdem Sie die Nachschlage-IDs für einen Ausdruck gefunden haben, können Sie die IDs in der IN-Klausel einer Collaborative Application Markup Language (CAML)-Abfrage zusammenfassen, um nach Elementen zu suchen, die mit diesem Ausdruck gekennzeichnet sind. Im Folgenden finden Sie eine Collaborative Application Markup Language (CAML)-Abfrage, mit der in einer Liste nach Elementen gesucht wird, die die Nachschlage-ID 14 und 15 im Feld ItemType aufweisen.

<Query><Where><In><FieldRef LookupId="TRUE" Name="ItemType" /><Values><Value Type="Integer">14</Value><Value Type="Integer">15</Value></Where></Query>

Sie können Abfragen erstellen, die Nachschlage-IDs für mehrere Ausdrücke enthalten. Häufig wird eine Abfrage erstellt, mit der Elemente abgerufen werden, die mit einem angegebenen Ausdruck oder mit untergeordneten Ausdrücken dieses Ausdrucks gekennzeichnet sind. Durch Übergeben von true für den bool includeDescendants-Parameter an TaxonomyField.GetWssIdsOfKeywordTerm erhalten Sie die Nachschlage-IDs für den Ausdruck mit der angegebenen GUID sowie die IDs für alle untergeordneten Ausdrücke.

Suchabfragen

Die Suche erstellt automatisch indizierte Eigenschaften, die verwalteten Metadatenfeldern entsprechen. Dies erleichtert Suchabfragen für Elemente, die wie in Tabelle 1 beschrieben mit bestimmten verwalteten Metadatenwerten gekennzeichnet sind.

Tabelle 1. Suchabfrageeigenschaften

Property

Beschreibung

ows_tax_idFieldName

Indiziert für jedes durchforstete Element die IDs der Ausdrücke im Feld FieldName. Diese Eigenschaft ist der verwalteten Eigenschaft owsTaxIdFieldName zugeordnet, mit der Sie eine Abfrage für durchforstete Elemente ausführen können, die in diesem Feld mit einem Ausdruck mit der angegebenen Ausdrucks-ID gekennzeichnet sind.

ows_FieldName

Indiziert für jedes durchforstete Element die Beschriftungen der Ausdrücke im Feld FieldName. Nur die Beschriftung des Ausdrucks, der zum Kennzeichnen des Elements verwendet wurde, wird hier einbezogen. Alternative Beschriftungen werden nicht indiziert.

ows_taxid_MetadataAllTagsInfo

Indiziert für jedes durchforstete Element die IDs aller Ausdrücke in allen Metadatenfeldern. Diese Eigenschaft ist der verwalteten Eigenschaft owsTaxIdMetadataAllTagsInfo zugeordnet, mit der Sie eine Abfrage für durchforstete Elemente ausführen können, die in einem Feld mit einem Ausdruck mit einer angegebenen Ausdrucks-ID gekennzeichnet sind.

owsMetadataFacetInfo

Mit dieser abrufbaren Eigenschaft wird eine Datenstruktur verwaltet, die Informationen zu allen Ausdrücken in einem Element in allen Metadatenfeldern enthält. Diese Datenstruktur weist das folgende Format auf: ColmunInternalName|ColumnDisplayName|CompressedGuid(StoreId)|CompressedGuid(TermSetId)|CompressedGuid(TermId)|CurrentLabel;#

Beispiele

Die in Tabelle 2 aufgelisteten Beispiele enthalten Suchabfragezeichenfolgen für die Suche nach Elementen, die das Schlüsselwort turtle enthalten und außerdem mit einer bestimmten Feld/Wert-Kombination gekennzeichnet sind.

Tabelle 2. Beispiele für Suchabfragezeichenfolgen

Beispiel

Abfragezeichenfolge

Hinweise

Ein einzelner Ausdruck, reference materials, im Feld ItemType:

http://contoso/searchcenter/pages/results.aspx?k=turtle&r="owstaxIdItemType"=#052263385-1fc3-4323-8d6b-50c8f6c3c45d:"reference materials"

#0 in der Abfragezeichenfolge vor der Ausdrucks-ID bedeutet, dass nur eine Suchabfrage nach der angegebenen Ausdrucks-ID ausgeführt wird.

Der Ausdruck reference materials oder untergeordnete Ausdrücke im Feld ItemType:

http://contoso/searchcenter/pages/results.aspx?k= turtle &r="owstaxIdItemType"=#52263385-1fc3-4323-8d6b-50c8f6c3c45d:"reference materials"

# vor der Ausdrucks-ID bedeutet, dass eine Suchabfrage nach der angegebenen Ausdrucks-ID oder nach der ID von untergeordneten Ausdrücken dieses Ausdrucks ausgeführt wird.

Ein einzelner Ausdruck in einem der Felder:

http://contoso/searchcenter/pages/results.aspx?k= turtle &r=owstaxIdMetadataAllTagsInfo=#052263385-1fc3-4323-8d6b-50c8f6c3c45d:"reference materials"

Im folgenden Codebeispiel wird das Ausführen einer Abfrage für Metadatenfeldwerte veranschaulicht.

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(".");
        }
    }
}

Siehe auch

Konzepte

Verwalten von Metadaten

Metadaten und Taxonomieprogrammierungsmodell