Doc produitsMenu

Plateforme Coveo 7.0 >
Aide à l'administrateur > Intégration Coveo > Solutions pour Sitecore > Intégration de l'interface de recherche.NET dans un site Web Sitecore

Intégration de l'interface de recherche Coveo .NET dans un site Web Sitecore

L'intégration de l'interface de recherche Coveo .NET dans Sitecore permet à vos utilisateurs finaux de recherche le contenu de votre index Coveo directement à partir de votre site web Sitecore à l'aide d'une interface de recherche Coveo riche en fonctionnalités.

Note : Si ce n'est pas déjà fait, indexez le contenu de votre site Sitecore afin de l'inclure dans la portée de l'interface de recherche à intégrer à Sitecore (voir Connecteur Sitecore).

Pour intégrer l'interface de recherche Coveo dans un site Web Sitecore

  1. À l'aide d'un compte d'administrateur, connectez-vous au serveur Sitecore.

  2. Si ce n'est pas déjà fait, installez ou mettez à jour les interfaces de recherche Coveo dans le serveur Sitecore (voir Installation de Coveo .NET Front-End).

  3. Démarrez le gestionnaire IIS (Internet Information Services) (dans la barre de tâches Windows, sélectionnez Démarrer > Outils d'administration > Gestionnaire des services IIS).

  4. Dans Gestionnaire des services IIS (Internet Information Services (IIS) Manager), créez un répertoire virtuel pour votre application Web Sitecore :

    1. Dans le panneau Connexions (Connections), agrandissez vers la racine de votre application Web Sitecore, cliquez-la avec le bouton droit de la souris et sélectionnez Ajouter un répertoire virtuel (Add Virtual Directory)

    2. Dans la boîte de dialogue Ajouter un répertoire virtuel, tapez Coveo dans la boîte Alias et le dossier [.Net_Front-End_Path]\Web\Coveo dans la boîte Chemin d'accès physique (Physical Path).

  5. À l'aide d'un éditeur de texte :

    1. Ouvrez le fichier Sitecore web.config.

      Note : Il est conseillé de créer une copie de sauvegarde du fichier web.config avant de le modifier.

    2. Dans la section configuration\configSections, ajoutez le code suivant :

      <sectionGroup name="coveoCnlWeb">
        <section name="customContent" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </sectionGroup>
      <sectionGroup name="coveoEnterpriseSearch">
        <section name="database" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="analytics" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="locations" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="server" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </sectionGroup>
    3. Dans la section configuration\system.web\pages, ajoutez le code suivant :

      <controls>
        <add tagPrefix="cnla" namespace="Coveo.CNL.Web.Ajax" assembly="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add tagPrefix="cnlb" namespace="Coveo.CNL.Web.BetterControls" assembly="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add tagPrefix="cnlm" namespace="Coveo.CNL.Web.Misc" assembly="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add tagPrefix="cnlv" namespace="Coveo.CNL.Web.Validators" assembly="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add tagPrefix="cnlvs" namespace="Coveo.CNL.Web.Validators.ServerSide" assembly="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add tagPrefix="cnlw" namespace="Coveo.CNL.Web.Widgets" assembly="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add tagPrefix="ces" namespace="Coveo.CES.Web.Search.Controls" assembly="Coveo.CES.Web.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add tagPrefix="cs" namespace="Coveo.CES.Web.Search.Controls.CustomerService" assembly="Coveo.CES.Web.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
      </controls>
      <namespaces>
        <add namespace="Coveo.CES.Web.Search" />
        <add namespace="Coveo.CNL.Web" />
      </namespaces>
    4. Dans la section configuration\system.web\compilation, ajoutez le code suivant :

      <assemblies>
        <add assembly="Coveo.CNL, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add assembly="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add assembly="Coveo.CES.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
        <add assembly="Coveo.CES.Web.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" />
      </assemblies>
    5. Dans la section configuration, ajoutez le code suivant :

      <coveoCnlWeb>
        <customContent uri="~/Coveo/" anonymousUri="~/Coveo/Anonymous/" />
      </coveoCnlWeb>
      <coveoEnterpriseSearch>
        <server hostname="localhost" port="52800" servicesHostname="localhost" servicesPort="52810" instance="default" mirrorName="default" sslCertificatePath="C:\Program Files\Coveo .NET Front-End 12\Web\certificate.p12" />
        <database enabled="false" connectionString="mongodb://localhost/databaseName" />
        <analytics enabled="false" connectionString="Data Source=yourServerName;Initial Catalog=CoveoAnalytics;Integrated Security=SSPI;" />
      </coveoEnterpriseSearch>
    6. Enregistrez le fichier.

  6. Intégrez l'interface de recherche dans une structure ou une sous-structure Sitecore :

    • Ajoutez le code suivant dans l'emplacement approprié dans le fichier de mise en page ou de sous-mise en page .aspx de Sitecore dans laquelle vous souhaitez intégrer le contrôle de l'interface de recherche Coveo.

      <%@ Register TagPrefix="ces" Namespace="Coveo.CES.Web.Search.Controls" Assembly="Coveo.CES.Web.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" %>
      <%@ Assembly Name="Coveo.CNL, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" %>
      <%@ Assembly Name="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" %>
      
      <asp:Panel ID="pnResultsPanel" runat="server">
            <ces:SearchHub id="c" runat="server"/>
      </asp:Panel>

      OU

    1. Si vous choisissez d'indexer la sécurité de Sitecore à l'aide d'un fournisseur de sécurité (voir Configuration d'un fournisseur de sécurité Sitecore), vous devez plutôt ajouter le code suivant, qui contient un script pour permettre à l'interface de recherche d'afficher les résultats de recherche qui correspondent à l'utilisateur présentement connecté.

      À l'aide de l'API de Sitecore, le script c_OverrideUser récupère l'utilisateur présentement connecté et passe cet utilisateur vers l'interface de recherche de Coveo.

      Note : Les éléments de sécurité CES (Coveo Enterprise Search) sont sensibles à la casse. Le connecteur Sitecore indexe toujours les éléments de sécurité en minuscules. Veillez à fournir un nom d'utilisateur en minuscules pour que la sécurité soit réglée correctement.

      <%@ Control Language="C#" AutoEventWireup="true" Inherits="layouts_PFCEnergy_CoveoSearchResults" Codebehind="CoveoSearchResults.ascx.cs" %>
      <%@ Register TagPrefix="ces" Namespace="Coveo.CES.Web.Search.Controls" Assembly="Coveo.CES.Web.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" %>
      <%@ Assembly Name="Coveo.CNL, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" %>
      <%@ Assembly Name="Coveo.CNL.Web, Version=12.0.0.0, Culture=neutral, PublicKeyToken=44110d16825221f2" %>
       
      <script runat="server">
      void c_OverrideUser(object p_Sender, Coveo.CES.Web.Search.Controls.OverrideUserEventArgs p_Args)
      {
        // The name of the security provider defined under the Admin Tool
        string securityProviderName = "Sitecore Security Provider";
        Coveo.CES.Web.Search.Providers.ICESUserIdentityFactory factory = Coveo.CES.Web.Search.Providers.SearchProviderFactory.CreateDefaultUserIdentityFactory();
        // Get the username from SitecoreAPI
        string userName = Sitecore.Context.GetUserName().ToLower();
        // Add to the collection of identities
        Coveo.CES.Web.Search.Providers.IUserIdentity user = factory.CreateSecurityProviderUser(userName, securityProviderName, false, null);
        p_Args.AdditionalIdentities.Add(user);
      }
      </script>
       
      <div id="contentMain">
        <asp:Panel ID="pnResultsPanel" runat="server">
          <ces:SearchHub id="c" runat="server" OnOverrideUser="c_OverrideUser"/>
        </asp:Panel>
      </div>

      Note : L’événement OnOverrideUser n'est pas disponible pour tous les contrôles de recherche Coveo tels que les contrôles QuickSearch et SearchBox.

      L'interface de recherche peut cibler une source d'index explicite comme affiché dans le script suivant.

      <script runat="server">
      override void OnInit(EventArgs p_Args)
      {
         SearchBinding.MainSearchObject.SetupSearchBuilder += this.Search_SetupSearchBuilder;
         base.OnInit(p_Args);
      }
      
      void Search_SetupSearchBuilder(object p_Sender, SetupSearchBuilderEventArgs p_Args)
      { 
          p_Args.Builder.AddConstantExpression("@Source=MySourceName");
      }
      </script>
  7. À l'aide d'un navigateur, accédez à la page modifiée pour voir le hub de recherche.

    La page de première installation Configuration du serveur d'interface apparaît afin que vous puissiez compléter l'installation de Coveo Front-End (voir Première installation de Coveo .NET Front-End).

Astuce : Si vous remarquez que certaines images Coveo ou une partie de JavaScript sont manquantes car elles ne chargent pas dans l'interface de recherche, vous pouvez régler ce problème avec une simple modification du fichier Sitecore web.config (pas le fichier Coveo web.config). Dans le fichier, localisez la balise <setting name="IgnoreUrlPrefixes"..> et ajoutez la chaîne |/Coveo/ à l'attribut value.

Exemple :

<setting name="IgnoreUrlPrefixes" value="/sitecore/default.aspx|/trace.axd|/webresource.axd|/Coveo/"/>

Prochaines étapes?

Vous devriez intégrer la recherche Coveo dans l'Éditeur de contenu Sitecore (voir Intégration de la recherche Coveo .NET dans l'Éditeur de contenu Sitecore).