Sitecore Search Performance: Search und Indexing Time verbessern

Sitecore Search Performance: Search und Indexing Time verbessern

default avatar
VonRosen Petrov
Mai 26, 2019
Header image of Sitecore Search Performance blog

Auf einer Sitecore-Plattform hängt die Suchleistung sehr stark von der Größe der indizierten Daten innerhalb des Suchindexes ab.

Das FFW-Team arbeitet nicht nur mit Drupal und WordPress. Wir haben auch einige preisgekrönte Sitecore-Lösungen entwickelt. In dieser Sitecore-Blog-Reihe geben wir unsere Erkenntnisse über die Verfeinerung der Sitecore-Suchfunktionalität zur Verbesserung der User Experience weiter.

Auf einer Sitecore-Plattform hängt die Suchleistung sehr stark von der Größe der indexierten Daten innerhalb des Suchindex ab. Ein kleinerer Index bedeutet schnellere Suche, schnellere Indizierung der Daten und einfachere Wartung. Hier sind einige Tipps, wie Sie die Sitecore-Such- und Indexierungszeit in Ihren Suchimplementierungen verringern können.

Bevor Sie diese Tipps ausprobieren, denken Sie daran: Immer die gleiche Entwicklungstechnik zu verwenden, ist nicht immer guter Ansatz für die Software-Entwicklung, weil die gleiche Technik nicht für alle Fälle die beste ist. Jede Implementierung hängt sehr stark von den Anforderungen ab, und eine Lösung muss nicht überall perfekt passen.

Wenn Sie z.B. eine sehr präsentationslastige Website haben, die kaum die Sitecore-Suchfunktionen benutzt, ist es wahrscheinlich gut genug, bei den Standard-Suchindizes von Sitecore (sitecore_master(web)_index) zu bleiben, weil die optimale Suchleistung nicht so wichtig ist.

Wenn Sie umgekehrt an einer Website arbeiten, deren Funktionalität stark von der Suche abhängt, dann sollten Sie auf jeden Fall in Erwägung ziehen, die Such- und Indexierungsgeschwindigkeit so weit wie möglich zu verbessern. Die Erstellung benutzerdefinierter Indizes ist gerade in diesen Szenarien sehr wertvoll, wenn viele Funktionen innerhalb Ihrer Lösungen auf der Sitecore-Suche beruhen und Sie riesige Datenmengen verarbeiten.  

Einen Custom Index bauen

Es ist immer einfacher, einfach sitecore_master_index/sitecore_web_index zu verwenden, aber diese Standard-Sitecore-Indizes sind mit Daten überladen, was Ihre Indizierungs- und Suchzeiten verlangsamt. Außerdem ist es nicht unbedingt best Practice, damit anzufangen, Templates und Felder aus den Standard-Sitecore-Indizes auszuschließen, weil dadurch einige Bugs eingeführt werden könnten. Erstellen Sie stattdessen einen benutzerdefinierten Index, der nur die von Ihnen benötigten Daten enthält.

Ein guter Ansatz ist es, das Domain-Index-Pattern zu verwenden und die Indizes auf der Grundlage der Business-Domain zu organisieren und für jede Domain einen neuen Index zu konfigurieren, in dem die Daten auf die optimale Weise gespeichert werden. Beispiele dafür können Sie sogar in den Default Sitecore Indizes sehen (marketing_assets_index, fxm, xdb, etc.), die tatsächlich nach dem Domain-Index-Pattern organisiert sind.

Indexieren Sie nur die benötigten Templates und Fields

Ein weiterer nützlicher Tipp: Indexieren Sie nur das, was zu suchen sein soll. Sie können Templates und Felder von der Indizierung ausschließen - dies kann nicht nur für Ihre benutzerdefinierten Templates und Felder geschehen, sondern auch für diejenigen, die von Sitecore-Templates kommen (Workflow, Hilfetext, Validierungsregeln, Sicherheit usw.). Hier sind die High-Level-Richtlinien darüber, wie Sie Ihre benutzerdefinierte Index-Konfiguration aufbauen:

  • Referenzieren Sie <defaultSolrIndexConfiguration> von der custom index configuration
  • Löschen Sie <documentOptions> und <virtualFields>
  • Setzen Sie <indexAllFields> auf false
  • Schließen Sie nur die Vorlagen und Felder ein, die Sie benötigen, indem Sie <include> und <exclude> Elemente verwenden

Hier ist die Dokumentation Indexing Configuration Files und ein super Beispiel von Bartłomiej Mucha.

Indexieren Sie nur benötigte Content Locations

Sie können Ihre Index-Crawler so konfigurieren, dass sie nur den Teil enthalten, der zum Crawlen und Indizieren benötigt wird.
Dies geschieht durch Hinzufügen von Crawlern innerhalb des Elements <locations> in Ihrer Index-Konfiguration. Zum Beispiel: <locations>
  <crawler name="content" type="Sitecore.ContentSearch.SitecoreItemCrawler,Sitecore.ContentSearch">
    <Database>master</Database>
    <Root>/sitecore/content/Home/Products</Root>
  </crawler>
  <crawler name="media" type="Sitecore.ContentSearch.SitecoreItemCrawler,Sitecore.ContentSearch">
    <Database>master</Database>
    <Root>/sitecore/media library/Products</Root>
  </crawler>
</locations>

Noch mehr über Search Indexing in Sitecore? Hier sind noch ein paar Leseempfehlungen:

Schauen Sie auch in unsere Blog-Serie Sitecore Search: Your Complete Guide to Performance Improvement!