How to search your site columns with Enterprise Search
Posted
Thursday, July 31, 2008 5:14 PM
by
CoreyRoth
I decided to go with an intro topic for Enterprise Search today. If you are like me, you often find yourself in a situation where you are doing ECM related activities such as creating custom content types that use site columns. This may present itself in the form of a custom list, form library, or a document library. After you get some documents, forms, or list items in there, eventually someone is going to want to search on them. Searching these things is not really hard at all. After all the Local Office SharePoint Sites content source will index this stuff for you. If you want to be able to build more advanced searches though, you are going to need to be able to search on those site columns.
In today's example, let's assume my content type uses site columns called City, State, and Product Type. The reason I might want to do this is because I might want to have a search such as show me all documents from the state of California. We'll also assume that the content type I have inherits from document (so we are dealing with document libraries). The first thing we need to do is to get Enterprise Search to learn about our site columns. It does this by crawling, but we can't crawl without doing a little work first. In our document library, we have to go create a document or two that actually has those site columns populated. If there isn't any documents with that metadata populated, Enterprise Search won't know about it and it won't add those site columns as crawled properties.
After you create your documents and crawl, you should have some new crawled properties representing your site columns. It puts these new crawled properties under the SharePoint folder in your Metadata Property Mappings page. Here you can see crawled properties for all of the site columns on your SharePoint farm. The one thing to note is that it prefixes ows_ to your property and replaces any spaces with _x0020_. This means City would become ows_City and Product Type would become ows_Produt_x0020_Type. I really don't like the encoding on the spaces, so I just try to avoid them in my site columns. Now we just need to create managed properties and map them to the new crawled properties. Remember, you don't have to call the managed property the same name as the crawled property (i.e.: State would map to ows_State).
Once you map your properties, be sure and do another Full Crawl. This is necessary for the index to pick up your managed property mappings. Once you do that, use your search center (or create a new one) and you can perform your queries. For example, to search for all documents in California like mentioned above, you would use something like IsDocument:"1" State:"California".