Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 14th, 2012  |  syntax: None  |  size: 2.26 KB  |  hits: 31  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Excluding items selectively from Sitecore's Lucene search index - works when rebuilding with IndexViewer, but not when using Sitecore's built-in tools
  2. <search>
  3.   <configuration type="Sitecore.Search.SearchConfiguration, Sitecore.Kernel" singleInstance="true">
  4.     <indexes hint="list:AddIndex">
  5.       <index id="website" singleInstance="true" type="Sitecore.Search.Index, Sitecore.Kernel">
  6.         ...
  7.  
  8.         <locations hint="list:AddCrawler">
  9.           <master type="MyProject.Lib.Search.Indexing.CustomCrawler, MyProject">
  10.             ...
  11.           </master>
  12.  
  13.           <!-- Similar entry for web database. -->
  14.         </locations>
  15.       </index>
  16.     </indexes>
  17.   </configuration>
  18. </search>
  19.        
  20. using Lucene.Net.Documents;
  21. using Sitecore.Search.Crawlers;
  22. using Sitecore.Data.Items;
  23.  
  24. namespace MyProject.Lib.Search.Indexing
  25. {
  26.   public class CustomCrawler : DatabaseCrawler
  27.   {
  28.     /// <summary>
  29.     ///   Determines if the item should be included in the index.
  30.     /// </summary>
  31.     /// <param name="item"></param>
  32.     /// <returns></returns>
  33.     protected override bool IsMatch(Item item)
  34.     {
  35.       if (item["include in search results"] != "1")
  36.       {
  37.         return false;
  38.       }
  39.  
  40.       return base.IsMatch(item);
  41.     }
  42.   }
  43. }
  44.        
  45. for (int i = 0; i < database.Indexes.Count; i++)
  46. {
  47.   database.Indexes[i].Rebuild(database);
  48.   ...
  49. }
  50.        
  51. <indexes>
  52.   <index id="website" ... type="MyProject.Lib.Search.Indexing.CustomIndex, MyProject">
  53.     ...
  54.   </index>
  55.  
  56.   ...
  57. </indexes>
  58.        
  59. using Sitecore.Data;
  60. using Sitecore.Data.Indexing;
  61. using Sitecore.Diagnostics;
  62.  
  63. namespace MyProject.Lib.Search.Indexing
  64. {
  65.   public class CustomIndex : Index
  66.   {
  67.     public CustomIndex(string name)
  68.       : base(name)
  69.     {
  70.     }
  71.  
  72.     public override void Rebuild(Database database)
  73.     {
  74.       Sitecore.Search.Index index = Sitecore.Search.SearchManager.GetIndex(Name);
  75.       if (index != null)
  76.       {
  77.         index.Rebuild();
  78.       }
  79.     }
  80.   }
  81. }
  82.        
  83. using Sitecore.Data.Items;
  84. using Sitecore.Search;
  85. using Sitecore.Search.Crawlers;
  86.  
  87. namespace MyProject.Lib.Search.Indexing
  88. {
  89.   public class CustomCrawler : DatabaseCrawler
  90.   {
  91.     protected override void AddItem(Item item, IndexUpdateContext context)
  92.     {
  93.       if (item["include in search results"] == "1")
  94.       {
  95.         base.AddItem(item, context);
  96.       }
  97.     }
  98.   }
  99. }