Erstellen einer Suchlösung für allgemeine Anwendungsfälle
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Beschreiben, wie ein einzelnes Objekt durchsucht wird
- Erläutern, wie mehrere Objekte durchsucht werden
- Erklären, wie ein benutzerdefiniertes Objekt durchsucht wird
Bei der Arbeit bei Cloud Kicks
Angenommen, Sie sind der neue Starentwickler von Cloud Kicks. Dieses spannende Unternehmen stellt überaus bequeme, formschöne und umweltfreundliche maßangefertige Laufschuhe her, die bei Profiläufern wie Hobbyathleten gleichermaßen beliebt sind.
Sie wurden beauftragt, eine Online Knowledge Base für die Kunden und eine interne Produktwebsite für Cloud Kicks-Mitarbeiter zu erstellen. Sämtliche Daten stammen aus der Salesforce-Organisation von Cloud Kicks. Das sieht nach einer Aufgabe für eine angepasste Suchlösung aus, oder? Lassen Sie uns anhand dieses Szenarios einige gängige Anwendungsfälle für angepasste Suchlösungen durchgehen. Wir erörtern, warum Sie einen bestimmten Anwendungsfall verwenden sollten und geben dann ein paar Beispiele.
Suche in einem einzelnen Objekt
Cloud Kicks ist ein wachsendes Start-up, und das Marketing arbeitet hart daran, diese Botschaft zu verbreiten. Das Marketingteam hat mehrere Kampagnen gestartet und verfolgt diese über Salesforce nach. Die Marketing- und die Vertriebsabteilung haben um eine Möglichkeit gebeten, nur Kampagnen auf der internen Produktwebsite zu durchsuchen, an der Sie arbeiten. Suchen in einzelnen Objekten eignen sich besonders, wenn Benutzer eine schnelle Möglichkeit zum Durchsuchen eines Datensatztyps benötigen, da sie nicht durch das Sichten von Datensätzen ausgebremst werden möchten, die für sie nicht zutreffen.
Um mithilfe von SOSL ein einzelnes Objekt zu durchsuchen, geben Sie einfach dieses Objekt in der Anforderung an. So einfach ist das.
FIND {term} RETURNING ObjectTypeName
Bei diesem Beispiel ist term
der vom Benutzer eingegebene Begriff. ObjectTypeName begrenzt Suchergebnisse so, dass nur das angegebene sObject einbezogen wird. Wenn also der Benutzer die E-Mail-Kampagne vom März 2016 finden möchte, sieht die Anforderung so aus:
FIND {march 2016 email} RETURNING Campaign
In der nächsten Lektion gehen wir detailliert auf all das ein, was Sie mit RETURNING anstellen können und wie Sie Ihre Suche für optimale Ergebnisse verfeinern.
Suchen in mehreren Objekten
Cloud Kicks mag seine Kunden. Das Unternehmen möchte eine Zentrale einrichten, in der Benutzer Fragen stellen und Informationen teilen können. Es sind mehrere Arten von Informationskategorien vorgesehen: Videos, Artikel, Fragen und PDF-Dateien. Doch Benutzern ist eigentlich egal, welche Art von Inhalt präsentiert wird. Ihnen geht es nur darum, die gewünschten Informationen schnell zu finden. Deshalb ist die Suche in mehreren Objekten so nützlich: Sie können mehrere Objekte gleichzeitig durchsuchen, da die Art des Datensatzes für den Benutzer unerheblich ist. Oder vielleicht möchte der Benutzer tatsächlich mehrere Objekttypen in den Ergebnissen sehen.
Zum Glück ist das Hinzufügen eines weiteren Objekts in SOSL ganz einfach. Sie müssen bloß eine Liste mit Kommas als Trennzeichen hinzufügen.
FIND {term} RETURNING ObjectTypeName1, ObjectTypeName2, ObjectTypeNameYouGetTheIdea
Zurück in unserem Szenario fragt sich ein Cloud Kicks-Kunde, ob es Schuhe gibt, die aus wiederaufbereiteten Materialien gefertigt sind. Sie haben die Online Knowledge Base so eingerichtet, dass in den Ergebnissen mehrere Objekte zurückgegeben werden, die den Begriffen entsprechen.
FIND {recycled materials} RETURNING Product2, ContentVersion, FeedItem
Hinweis: Wenn Sie ein Objekt nicht im Element RETURNING angeben, wird es nicht in den Ergebnissen angezeigt.
Suchen in benutzerdefinierten Objekten
Salesforce bietet zahlreiche Standardobjekte, die Kunden zur Verfügung stehen. Doch bei Cloud Kicks dreht sich alles um maßgefertigte Schuhe, weshalb es einen Sinn ergibt, dass das Unternehmen auch benutzerdefinierte Objekte benötigt. Von besonderem Interesse für Sie ist das neueste benutzerdefinierte Objekt, Merchandise. Dieses Objekt enthält sämtliche Informationen zu allen Produkten von Cloud Kicks: Stil, ID, Farbe, Materialien, Name und Preis. Viele Cloud Kicks-Mitarbeiter, z. B. im Support, Vertrieb und Versand, müssen auf diese Informationen zugreifen.
Für die interne Produktwebsite, die Sie entwickeln, fügen Sie ein Suchfeld hinzu, über das nur das benutzerdefinierte Objekt "Merchandise" durchsucht wird. Es gibt keine besondere Möglichkeit zum Angeben benutzerdefinierter Objekte in einer SOSL-Suche. Fügen Sie den sObject-Namen so wie andere Standardobjekte hinzu und hängen Sie das Suffix a__c an.
FIND {pink hi\-top} RETURNING Merchandise__c
SOQL
Wir haben uns über SOSL ausgelassen, doch was ist mit SOQL? Nun, Sie verwenden SOQL für Suchvorgänge nach einzelnen Objekten, wenn Sie wissen, welche Felder zu durchsuchen sind, ob der Suchbegriff eine genaue Übereinstimmung mit dem Feld ist (keine Teil- oder reihenfolgenunabhängigen Übereinstimmungen), wenn Sie Daten aus einem Zahlen-, Datums- oder Kontrollkästchenfeld benötigen und bloß nach ein paar Ergebnissen suchen. (Eine vollständige Liste mit den Zwecken von SOQL finden Sie in der vorherigen Einheit.)
Bei einem Blick auf die vorhergehenden gängigen Anwendungsfälle in diesen Modulen sind Ihnen ggf. einige Warnsignale beim Verwenden von SOQL aufgefallen. Beispiel:
- Suche in einem einzelnen Objekt: SOQL funktioniert, wenn Sie wissen, in welchem Feld sich die Daten befinden. Da wir als Feld nicht März 2016 E-Mail angegeben haben, ist eine SOSL-Suche gegenüber SOQL zu bevorzugen. Im Allgemeinen funktioniert SOSL, wenn in der Abfrage kein zu durchsuchendes Zielfeld angegeben ist.
- Suche nach mehreren Objekten: Da Sie nur Daten aus mehreren Objekten abrufen können, die in Bezug zueinander stehen, ist das Suchen mehrerer Objekte in SOQL eingeschränkt. In unserem Szenario standen die Objekte nicht in Beziehung, sodass SOSL die erste Wahl ist.
- Suche nach benutzerdefinierten Objekten: Wie bei einer Suche nach einem einzelnen Objekt ist auch eine Suche nach benutzerdefinierten Objekten in SOQL möglich. Wir haben allerdings nicht angegeben, in welchem Feld sich die Daten für unseren Suchbegriff pink hi-top befinden. Darüber hinaus wendet SOQL Suchvorgänge auf die Datenbank und nicht auf den Index an. Nehmen wir nun einmal an, dass im Datensatz tatsächlich pink sneaker hi-top enthalten war. SOQL wäre nicht in der Lage, uns die richtigen Ergebnisse zurückzuliefern.