2013-12-20 8 views
6

Sitecore CMS + DMS 6.6.0 rev.130404 => 7.0 rev.130424Upgrade Sitecore 6.6 Indexkonfiguration auf Sitecore 7 (mit ComputedFields)

In unserem Projekt haben wir AdvancedDatabaseCrawler (ADC) für unsere Indizes wurden unter Verwendung von (besonders wegen seiner dynamischen Felder Eigenschaft). Hier ist ein Beispiel Indexkonfiguration:

<index id="GeoIndex" type="Sitecore.Search.Index, Sitecore.Kernel"> 
<param desc="name">$(id)</param> 
<param desc="folder">$(id)</param> 
<analyzer ref="search/analyzer" /> 
<locations hint="list:AddCrawler"> 
    <web type="scSearchContrib.Crawler.Crawlers.AdvancedDatabaseCrawler, scSearchContrib.Crawler"> 
    <database>web</database> 
    <root>/sitecore/content/Globals/Locations</root> 
    <IndexAllFields>true</IndexAllFields> 
    <include hint="list:IncludeTemplate"> 
     <!--Suburb Template--> 
     <suburb>{FF0D64AA-DCB4-467A-A310-FF905F9393C0}</suburb> 
    </include> 
    <dynamicFields hint="raw:AddDynamicFields"> 
     <dynamicField type="OurApp.CustomSearchFields.SearchTextField,OurApp" name="search text" storageType="NO" indexType="TOKENIZED" vectorType="NO" /> 
     <dynamicField type="OurApp.CustomSearchFields.LongNameField,OurApp" name="display name" storageType="YES" indexType="UN_TOKENIZED" vectorType="NO" /> 
    </dynamicFields> 
    </web> 
</locations> 
</index> 

Wie Sie sehen können, wir scSearchContrib.Crawler.Crawlers.AdvancedDatabaseCrawler als Crawler verwenden, und es verwendet die innerhalb <dynamicFields hint="raw:AddDynamicFields"> Abschnitt definierte Felder benutzerdefinierte Felder in den Index zu injizieren.

Jetzt aktualisieren wir unser Projekt auf Sitecore 7. In Sitecore 7 haben sie die DynamicFields-Funktionalität von ADC in Sitecore portiert. Ich habe einige Artikel dazu gefunden und unsere benutzerdefinierten Suchfeldklassen konvertiert, um sitecore 7 IComputedIndexField Schnittstelle zu implementieren, statt von BaseDynamicField Klasse in ADC zu erben. Jetzt ist mein Problem, wie man die Indexkonfiguration ändert, um mit neuen sitecore 7 APIs übereinzustimmen. Es gab kleine Teile im Internet, aber ich konnte nicht alle Beispiele finden, die ich brauchte, um meine Konfiguration zu konvertieren. Kann mir jemand dabei helfen?

Während ich das mache, habe ich den Eindruck, dass wir unsere Indizes nicht neu erstellen müssen, da es Lucene intern verwendet. Ich möchte die Indexstruktur nicht ändern. Ich möchte nur den Code und die Konfiguration von AdvancedDatabaseCrawler auf Sitecore 7 aufrüsten. Sollte ich mir Sorgen machen, dass unsere bestehenden Indizes durchbrochen werden? Bitte werfen Sie auch etwas Licht darauf.

Dank

Antwort

4

Ich habe es geschafft, die Indexkonfiguration für SiteCore ContentSearch API zu konvertieren. Die Sitecore-Standardindexkonfigurationen waren eine große Hilfe.

Hinweis: Wie auch von Stephen erwähnt, <include hint="list:IncludeTemplate"> funktioniert nicht in Sitecore 7.0 erste Version. Es ist in Sitecore 7.0 rev behoben. 131127 (7.0 Update-3) und ich plane ein Upgrade darauf.

Hier ist ein guter Artikel auf von John West. Es hilft Ihnen bei der Konfiguration Ihrer Indizes wie Sie wollen.

Converted Konfiguration:

<sitecore> 
<contentSearch> 
    <configuration type="Sitecore.ContentSearch.LuceneProvider.LuceneSearchConfiguration, Sitecore.ContentSearch.LuceneProvider"> 
    <DefaultIndexConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider"> 
     <IndexAllFields>true</IndexAllFields> 
     <include hint="list:IncludeTemplate"> 
     <!--Suburb Template--> 
     <suburb>{FF0D64AA-DCB4-467A-A310-FF905F9393C0}</suburb> 
     </include> 
     <fields hint="raw:AddComputedIndexField"> 
     <field fieldName="search text" storageType="NO" indexType="TOKENIZED" vectorType="NO">OurApp.CustomSearchFields.SearchTextField,OurApp</field> 
     <field fieldName="display name" storageType="YES" indexType="UN_TOKENIZED" vectorType="NO">OurApp.CustomSearchFields.LongNameField,OurApp</field> 
     </fields> 
    </DefaultIndexConfiguration> 
    <indexes hint="list:AddIndex"> 
     <index id="GeoIndex" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider"> 
     <param desc="name">$(id)</param> 
     <param desc="folder">$(id)</param> 
     <!-- This initializes index property store. Id has to be set to the index id --> 
     <param desc="propertyStore" ref="contentSearch/databasePropertyStore" param1="$(id)" /> 
     <strategies hint="list:AddStrategy"> 
      <!-- NOTE: order of these is controls the execution order --> 
      <strategy ref="contentSearch/indexUpdateStrategies/onPublishEndAsync" /> 
     </strategies> 
     <commitPolicy hint="raw:SetCommitPolicy"> 
      <policy type="Sitecore.ContentSearch.TimeIntervalCommitPolicy, Sitecore.ContentSearch" /> 
     </commitPolicy> 
     <commitPolicyExecutor hint="raw:SetCommitPolicyExecutor"> 
      <policyExecutor type="Sitecore.ContentSearch.CommitPolicyExecutor, Sitecore.ContentSearch" /> 
     </commitPolicyExecutor> 
     <locations hint="list:AddCrawler"> 
      <crawler type="Sitecore.ContentSearch.LuceneProvider.Crawlers.DefaultCrawler, Sitecore.ContentSearch.LuceneProvider"> 
      <Database>web</Database> 
      <Root>/sitecore/content/Globals/Countries</Root> 
      </crawler> 
     </locations> 
     </index> 
    </indexes> 
    </configuration> 
</contentSearch> 
</sitecore> 
7

Ein paar schnelle Klärung :)

Wir ADC in Sitecore 7 nicht zusammengeschlossen haben, die ContentSearch Schicht eine komplette Neufassung der alten Suche Schicht für Sitecore ist. Wir haben einige der Kernkonzepte von ADC, wie dynamische Felder, übernommen und in die neue Implementierung (als ComputedFields) eingefügt. Sie sind nicht 1: 1-kompatibel und Sie müssen etwas an Ihren Indizes arbeiten.

Die Version von Lucene wurde ebenfalls von 2. * auf 3.0.3 aktualisiert, daher müssen alle Indizes neu erstellt werden, da es sich um eine sehr unterschiedliche Version von Lucene handelt.

Hier gibt es zwei Möglichkeiten, die alte Lucene-Suche (Sitecore.Search-Namespace) (auf welcher ADC gebaut wurde) wurde nicht berührt und funktioniert immer noch auf die gleiche Weise, obwohl ich nicht sicher bin, ob ADC mit SItecore kompatibel ist 7 wie in der Theorie wurde dies jetzt ersetzt.

Die nächste Option besteht darin, Ihren Index zu aktualisieren, um die neuen Suchfunktionen von Sitecore 7 nutzen zu können. Die Konfiguration ist nicht direkt kompatibel, Sie müssen jedoch Ihren Index in die neue Konfiguration umwandeln Konzepte sollten Ihnen vertraut sein. Die dynamischen Felder, die Sie haben, sollten auf ComputedFields (Felder, die berechnet werden, wenn ein Element indiziert wird) logisch zugeordnet werden und alles andere ist einfach.

Während es wie viele zusätzliche Konfiguration für ContentSearch aussieht ist eine Menge davon Standardkonfiguration, die Sie nicht berühren müssen, müssen Sie nur die Konfigurationsteile für die berechneten Felder, die Sie hinzufügen möchten, und die Vorlage überschreiben Sie möchten einbeziehen.

Ein Beispiel für Ihre eigene Konfigurationsüberschreibungs erstellen, können Sie hier: http://www.mikkelhm.dk/post/2013/10/12/Defining-a-custom-index-in-Sitecore-7-and-utilizing-it.aspx ich auch

würde Ihnen empfehlen, auf 7,0 rev sicherstellen aktualisieren. 131127 (7.0 Update-3), da dies einen Fehler in der IncludeTemplates-Logik in der aktuellen Version behebt.

+0

Vielen Dank Stephen! Ich habe es geschafft, die Konfigurationen zu konvertieren, indem ich auf Sitecore-Suchkonfigurationen schaute, die mit Sitecore und einigen Experimenten ausgeliefert wurden. Yeah IncludeTemplates ist defekt und ich werde auf 7.0 Update-3 upgraden. – ravinsp

Verwandte Themen