Contact us

Sitecore 7: Creating a custom index

January 22, 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.

Contact us

We would love to hear from you! Please fill out the form and the nearest person from office will contact you. 
Should you need an alternative format and/or communication support to provide feedback please contact Sheree Atcheson.

Let's reinvent the future