Hello Devs,
If you want to create a custom Solr index file in your solution and having trouble in doing so (we too had trouble), you are at right place.
If you want to create a custom Solr index file in your solution and having trouble in doing so (we too had trouble), you are at right place.
Earlier we used custom Lucene indexes in our solution but due to performance issues we decided to move all the custom indexes to SOLR (Read more about using Solr or Lucene).
If you are moving your custom Lucene indexes to Solr you would need to change few configurations to make it working.
Below I have created a custom Solr index file (e.g. employeecustomindex)
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<configuration type="Sitecore.ContentSearch.ContentSearchConfiguration,
Sitecore.ContentSearch">
<indexes hint="list:AddIndex">
<index id="employeecustomindex" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex,
Sitecore.ContentSearch.SolrProvider">
<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/indexConfigurations/databasePropertyStore" param1="$(id)" />
<configuration ref="contentSearch/indexConfigurations/employeeCustomIndexConfiguration" />
<strategies hint="list:AddStrategy">
<!-- NOTE: order of these controls the execution order -->
<strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/rebuildAfterFullPublish" />
<strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/onPublishEndAsync" />
<strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/remoteRebuild" />
</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>web</Database>
<Root>/sitecore/content/Home/Employee/</Root>
</crawler>
</locations>
</index>
</indexes>
</configuration>
<indexConfigurations>
<employeeCustomIndexConfiguration ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex,
Sitecore.ContentSearch.SolrProvider">
<indexAllFields>false</indexAllFields>
<include hint="list:IncludeTemplate">
<Employee>{AB47C5E1-000E-4DF1-B74F-0FC226FB19BB}</Employee>
</include>
<include hint="list:IncludeField">
<EmployeeName>{6244D370-D460-41B6-A6D1-34040C828523}</EmployeeName>
<EmployeeCity>{8B8BDA9E-C728-44D3-8859-204448812B3F}</EmployeeCity>
<DoNotDisplay>{6F2DAA38-8467-43F1-85DD-5B5A14BB1719}</DoNotDisplay>
</include>
<exclude hint="list:ExcludeField">
<EmployeeDOB>{E16B5AEE-3E7A-4CEB-A743-9CEB1CCE636F}</EmployeeDOB>
<EmployeeBio>{6B50DE85-DCC3-4592-9746-6170E1657321}</EmployeeBio>
</exclude>
<fieldReaders ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration/fieldReaders"/>
<indexFieldStorageValueFormatter ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration/indexFieldStorageValueFormatter"/>
<indexDocumentPropertyMapper ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration/indexDocumentPropertyMapper"/>
</employeeCustomIndexConfiguration>
</indexConfigurations>
</contentSearch>
</sitecore>
</configuration>
1. First, we need to
change the reference to (e.g. contentSearch/indexConfigurations/employeeCustomIndexConfiguration).
<configuration ref="contentSearch/indexConfigurations/employeeCustomIndexConfiguration" />
2. If we want to
index only specific fields, set the indexAllFields property to false.
<indexAllFields>false</indexAllFields>
3. Set templates
which we want to index in below configuration section.
<include
hint="list:IncludeTemplate">
<Employee>{AB47C5E1-000E-4DF1-B74F-0FC226FB19BB}</Employee>
</include>
4. Set fields we
want to add in index in our case we have
(Employee Name,Employee City,EmployeeDOB,EmployeeBio,DoNotDisplay) in Employee template
(Employee Name,Employee City,EmployeeDOB,EmployeeBio,DoNotDisplay) in Employee template
<include hint="list:IncludeField">
<EmployeeName>{6244D370-D460-41B6-A6D1-34040C828523}</EmployeeName>
<EmployeeCity>{8B8BDA9E-C728-44D3-8859-204448812B3F}</EmployeeCity>
<DoNotDisplay>{6F2DAA38-8467-43F1-85DD-5B5A14BB1719}</DoNotDisplay>
</include>
Set fields we don't want to add in index.
<exclude hint="list:ExcludeField">
<EmployeeDOB>{E16B5AEE-3E7A-4CEB-A743-9CEB1CCE636F}</EmployeeDOB>
<EmployeeBio>{6B50DE85-DCC3-4592-9746-6170E1657321}</EmployeeBio>
</exclude>
5. At last we need
to add references for
<fieldReaders ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration/fieldReaders"/>
<indexFieldStorageValueFormatter ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration/indexFieldStorageValueFormatter"/>
<indexDocumentPropertyMapper
ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration/indexDocumentPropertyMapper"/>
which references to defaultSolrIndexConfiguration file.
which references to defaultSolrIndexConfiguration file.
After making all the changes restart your
Solr service, re-build index and preview your index in Solr admin panel.
Happy Solr Indexing!!! 😊
No comments:
Post a Comment