Adding custom properties to the MOSS2007 Advanced Search page

Recently, I’ve been playing a bit with MOSS2007. Actually I've dabbled with it a little bit when SharePoint 2003 came out, but not to the extent that I am now.

Installation was a bitch at the start, but thankfully there is a lot of useful resources out on the web this time around. I was looking to set up metadata (custom column) searching, and this article, Searching Custom Column Values in MOSS 2007  by Jonathon Frost, was extremely helpful. I did find, however, a couple of subtleties not mentioned in Jonathan's post.

For instance, I needed to add the corresponding PropertyRefs in the All Results ResultType section:

<PropertyDefs>

  <PropertyDef Name="Vendor" DataType="text" DisplayName="Vendor#"/>
  <PropertyDef Name="Invoice" DataType="text" DisplayName="Invoice#"/>
</PropertyDefs>

<ResultType DisplayName="All Results" Name="default">

    <PropertyRef Name="Vendor" />
     <PropertyRef Name="Invoice" />
</ResultType>

Originally, I mistakenly added my PropertyRefs in the “Word Documents” section, and was scratching my head for some time, wondering why my changes wouldn’t show up on the refresh of the Advanced Search page.

I also noted that I needed to manually run a Full Crawl for the custom properties to show up in the "”Mappings to crawled properties” section—which makes sense in hindsight.

Another thing I observed was that if I made changes to the Properties XML, I had to do an Incremental Crawl for it to take effect. For instance, I originally had the DisplayName for the “Vendor” property as simply “Vendor”. Later, I went back and changed this to Vendor#. The change would be reflected immediately on on the Advanced Search page, but the search was returning no results, until I manually ran the Incremental Crawl.

stdole 7.0.3300.0

When I first got this error during the initialization phase of my component:

Could not load file or assembly 'stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

I thought that it wanted Interop.stdole.dll, which was sitting right there in the working directory. But as it turned out, it meant the Primary Interop Assembly called stdole.dll, which was indeed missing.  Duh!