Microsoft Senior Instructor Brian Barry provides the tip below for developers working with FAST Search for Internet Sites (FSIS). Brian has over 6 years of experience with Enterprise Search.

Debugging IMS Flows

FAST Search Designer for Visual Studio includes a debug pane which allows inspection of all the objects in a record as it moves through the flow. For Content Transformation Services (CTS) the debug pane is very helpful. With Interaction Management Services (IMS) the Context Object is a container for all the other query and results objects. So the only object to show up in the debug pane is the context object. Double clicking on the Context Object opens it in a separate XML viewer.

I prefer viewing the XML in an XML language sensitive tool like Microsoft Internet Explorer or Visual Studio. I have created a Run Code operator to dump the Context Object to a file. It works like the Spy stage in ESP document processing, so I call it IMS Spy.

To add an IMS Spy operator to your IMS flow:

  1. Add a Run Code Operator after the operator you are debugging. Rename it “IMS Spy”.
  2. Open the IMS Spy operator.
  3. Click on the Edit Code link
  4. Find the code for the Execute method and modify it to look like the code below. You only need to replace the code between [Begin Main] and [End Main]. Do not modify any other code. Also, make sure the FSIS Service account has file write permissions on the directory where the file will be written.
  5. Click OK twice to save.
  6. Execute a query using your pipeline.

For more information on developing with IMS, I would recommend attending the instructor-led course FAST Search for Internet Sites for Application Developers from Microsoft through FAST University.

private static void Execute(
   object[] input, 
   object[] output,
   Microsoft.Ceres.ContentEngine.Processing.BuiltIn.RunCode.RunCodeContext context)
   Microsoft.Ceres.InteractionEngine.Services.Context ContextObject =
   // [BeginMain]
   // dump the xml of the context object
   System.Xml.XmlWriter writer =
   // [EndMain]
   output[0] = ContextObject;

By Brian Barry