Console app to start incremental crawl in MOSS 2007

Wrote a little Console application to kick start incremental crawl in MOSS 2007.

Here's how it can be used.

Usage: StartIncrementalCrawl.exe SiteURL "Content SourceName"
(Example: StartIncrementalCrawl.exe https://MyMOSSSite "Local Office Sharepoint Server Sites" )

As you can see, First I am getting the [SearchContext] Reference and then [ContentSources] collection, then just search for the passed content source name string.  Upon finding the content source, kick the incremental crawl on [ContentSrouce] object with static method StartIncrementalCrawl().
(Note: This utility should be run under the context of Farm Admin only)

Copy paste following code in a console app.

using System;

using System.Collections;

using System.Text;

using Microsoft.Office.Server.Search.Administration;

using Microsoft.SharePoint;

namespace PN.Moss.Samples

{

    /// <summary>

    /// Console app to start Incremental Crawl

    ///

    /// Usage: StartIncrementalCrawl.exe SiteUrl "ContentSourceName"

    /// (Example: StartIncrementalCrawl.exe https://MyMossSite "MyContentSource")

  ///

    /// </summary>

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                if (args.Length < 2)

                {

                    Usage();

                    return;

                }

                Console.WriteLine("Getting Search context...");

                string strURL = args[0];

                SearchContext context;

                using (SPSite site = new SPSite(strURL))

                {

                  context = SearchContext.GetContext(site);

                }

                Content sspContent = new Content(context);

                string strContentSource = args[1];

                Console.WriteLine(string.Format("Searching content source [{0}] ...", strContentSource));

                ContentSourceCollection sspContentSources = sspContent.ContentSources;

                if (!sspContentSources.Exists(strContentSource))

                {

                    Console.WriteLine("====================================================================");

                    Console.WriteLine(string.Format("ERROR: Unable to find content source [{0}]. \nPlease provide correct content source name.", strContentSource));

                    Console.WriteLine("====================================================================");

                }

                else

                {

                    ContentSource cs = sspContentSources[strContentSource];

                    if (cs.CrawlStatus == CrawlStatus.Idle)

                    {

                        Console.WriteLine("Starting Incremental Crawl...");

                        cs.StartIncrementalCrawl();

                        Console.WriteLine("====================================================================");

                        Console.WriteLine("Incremental Crawl started Successfully.\nPlease check SSP web site for completion.");

                        Console.WriteLine("====================================================================");

                    }

                    else

                    {

                        Console.WriteLine("====================================================================");

                        Console.WriteLine(string.Format("ERROR: Unable to start incremental crawl, as crawl status is not [idle].\n\n[INFO: Current Crawl Status={0}] \n\nPlease verify and try after crawl status becomes idle.", cs.CrawlStatus.ToString()));

                        Console.WriteLine("====================================================================");

                    }

                }

               

            }

            catch (Exception e)

            {

                Console.WriteLine("=========================");

                Console.WriteLine("*** Exception Occured ***");

                Console.WriteLine("=========================");

                Console.WriteLine(e.ToString());

            }

        }

        private static void Usage()

        {

            Console.WriteLine("=========================");

            Console.WriteLine("Start Incremental Crawl");

            Console.WriteLine("=========================");

            Console.WriteLine("Usage: StartIncrementalCrawl.exe SiteUrl \"ContentSourceName\"");

           Console.WriteLine("");

            Console.WriteLine("(Ex: StartIncrementalCrawl.exe https://MyMossSite \"MyContentSource\")");

        }

    }

}