I hadn’t really had a chance to do much with FAST Search, beyond your standard demo-ware installs and use cases, but I’ve been anxious to have an excuse to dig into it more.
The combination of beefed up BCS/BDC support in SharePoint 2010 plus FAST search seems like it would be a pretty powerful combination, especially if you have fairly large sets of data in your LOB applications and you don’t want to hammer them with constant, open-ended queries. In this case I was looking to be able to limit a search to return results of only a specific External Content Type (ECT). In the past, with SharePoint Search I’ve been able to just use the ContentType managed property for this (there’s a default mapping that brings in the ows_ContentType crawled property and maps it to this). However, it seems that for external content types, this property does not get set.
One option here would be to just setup a unique content source for each type of BCS entity that you want to bring in, and use the content source as part of the query. That seems pretty ridiculous for scenarios where you either have: a) a lot of entities/ECTs or entities that are related to one another. Fortunately, poking through the available crawled properties in my FAST Query SSA I found that there is one called “entityname” under the “Business Data” category. Mapping this to the ContentType managed property worked like a charm. I can now go ahead and send a query like the one included below to the SharePoint Search Web service and get back only results that are of the type that I care about. BTW, many thanks to the author of the FAST for SharePoint Query Tool. It’s the FAST-specific version of the SharePoint Search Tool I mentioned really liking in a previous post.
<QueryPacket Revision="1000"> <Query> <Context> <QueryText language="en-US" type="FQL">filter(contenttype:equals("MyBCSEntity"))</QueryText> </Context> <SupportedFormats Format="urn:Microsoft.Search.Response.Document.Document" /> <ResultProvider>FASTSearch</ResultProvider> <Range> <StartAt>1</StartAt> <Count>20</Count> </Range> <EnableStemming>true</EnableStemming> <IncludeRelevantResults>true</IncludeRelevantResults> <ImplicitAndBehavior>true</ImplicitAndBehavior> <TrimDuplicates>true</TrimDuplicates> <Properties> <Property name="Rank" /> <Property name="Title" /> <Property name="Author" /> <Property name="Size" /> <Property name="Path" /> </Properties> </Query> </QueryPacket>