Kontakt

Sitecore 7: Creating a custom index

22. Januar 2014

Your Sitecore 7 has three out of the box, built in default indexes. Join a nonlinear developer to learn how to create a custom configuration and an index definition.

We've been looking at the new Sitecore 7 release from a number of different angles, but one of the biggest improvements we've identified is in its search configuration. You can take a deeper look at the improvements on the Sitecore page, which highlights customizable update strategies that can be configured by data, but to get started, you will want to create a custom index. This will allow you to limit the indexed pages by template type, for example, without interfering with the three built-in out of the box default indexes in Sitecore 7.

Define your custom configuration:

In the /App_Config/Include folder, create your custom configuration file with the following content: 

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <contentSearch>
      <siteSearch type="Sitecore.ContentSearch.LuceneProvider.
LuceneIndexConfiguration,
Sitecore.ContentSearch.LuceneProvider">

         <!-- Place all needed custom configuration here -->
  <indexAllFields>true</indexAllFields>

  <!-- You also can reference sections from
DefaultIndexConfiguration -->
  <analyzer ref="contentSearch/configuration/
defaultIndexConfiguration/analyzer" />

         <!--(AddCustomConfigurationHere)-->

</siteSearch>
    </contentSearch>
  </sitecore>
</configuration>

Index definition:

In the /App_Config/Include folder, create your custom index definition file with the following content:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <contentSearch>
      <configuration type="Sitecore.ContentSearch.LuceneProvider.
LuceneSearchConfiguration,
Sitecore.ContentSearch.LuceneProvider">
        <indexes hint="list:AddIndex">
          <index id="sitesearch_web" 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)" />

            <Configuration ref="contentSearch/siteSearch" />

            <strategies hint="list:AddStrategy">
              <!-- NOTE: order of these is controls the execution order -->
              <strategy ref="contentSearch/indexUpdateStrategies/onPublishEndAsync" />
            </strategies>
            <commitPolicyExecutor type="Sitecore.ContentSearch.
CommitPolicyExecutor, Sitecore.ContentSearch">
              <policies hint="list:AddCommitPolicy">
                <policy type="Sitecore.ContentSearch.TimeIntervalCommitPolicy,
Sitecore.ContentSearch" />
              </policies>
            </commitPolicyExecutor>
            <locations hint="list:AddCrawler">
              <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler,
Sitecore.ContentSearch">
                <Database>master</Database>
                <Root>/sitecore</Root>
              </crawler>
            </locations>
          </index>

          <!--
            * Required to avoid the error: "Index has no configuration."
              Alternatively - You can change the files 'Sitecore.
ContentSearch.Lucene.Index.[DB].config'
          -->
          <index id="sitecore_core_index" type="Sitecore.ContentSearch.
LuceneProvider.LuceneIndex,
Sitecore.ContentSearch.LuceneProvider">
            <Configuration ref="contentSearch/configuration/
defaultIndexConfiguration"/>
          </index>
          <index id="sitecore_master_index" type="Sitecore.ContentSearch.
LuceneProvider.LuceneIndex,
Sitecore.ContentSearch.LuceneProvider">
            <Configuration ref="contentSearch/configuration/
defaultIndexConfiguration"/>
          </index>
          <index id="sitecore_web_index" type="Sitecore.ContentSearch.
LuceneProvider.LuceneIndex,
Sitecore.ContentSearch.LuceneProvider">
            <Configuration ref="contentSearch/configuration/
defaultIndexConfiguration"/>
          </index>
        </indexes>

      </configuration>
    </contentSearch>
  </sitecore>
</configuration>

Note that at the end of this configuration file you must reference the default configuration for the

pre-existing index configuration files. Failing to add this reference will result in a Sitecore error.

Kontakt

Wir freuen uns auf Ihre Nachricht! Bitte füllen Sie das Formular aus. Der zuständige Mitarbeiter unseres Büros wird sich dann mit Ihnen in Verbindung setzen.
Sollten Sie ein alternatives Format und/oder Unterstützung bei der Kommunikation benötigen, um uns Feedback zu geben, wenden Sie sich bitte an Sheree Atcheson.

Let's reinvent the future