<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>thomsven</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/thomsven/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/thomsven/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 04:05:44 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>How to get complete search results in Outlook 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/how-to-get-complete-search-results-in-outlook-2013</link>
      <pubDate>Fri, 01 Mar 2013 07:32:39 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2013/03/01/how-to-get-complete-search-results-in-outlook-2013/</guid>
      <description><![CDATA[After upgrading to Outlook 2013, me and my colleagues were annoyed by the search results in Outlook...]]></description>
      <content:encoded><![CDATA[<p>After upgrading to Outlook 2013, me and my colleagues were annoyed by the search results in Outlook 2013. Typically, if you search for a common term, you get at most a page-full of results, with the most recent hits. Something like this:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/3058.image_301A071F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/3058.image_5F00_301A071F.png"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/7752.image_thumb_40B2020D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/7752.image_5F00_thumb_5F00_40B2020D.png" width="604" height="582" /></a></p>  <p>There is link at the bottom, saying “More”, but clicking this one never yield much result.</p>  <p>The solution is fortunately not far away. Just click “File &gt; Options &gt; Search” and uncheck “Improve search speed by limiting the number of results shown”, like this:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/0003.clip_image002_76D37A5C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/0003.clip_5F00_image002_5F00_76D37A5C.jpg"><img title="clip_image002" style="display: inline; background-image: none;" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/3652.clip_image002_thumb_153DBB46.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/3652.clip_5F00_image002_5F00_thumb_5F00_153DBB46.jpg" width="604" height="406" /></a></p>  <p>Now, if you go back and do the same result, you should get more results!</p>  <p>One last thing: You may still get the “More” option, but now it refers the messages not cached locally on your machine. Starting from Outlook 2013, the client will by default only cache messages for the last 12 months, but this is easily configurable, as well. See this support article for details: <a href="https://support.microsoft.com/kb/2733062">https://support.microsoft.com/kb/2733062</a></p>  <p>Happy searching!</p>]]></content:encoded>
    </item>
    <item>
      <title>Moving from Search to Apps</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/moving-from-search-to-apps</link>
      <pubDate>Wed, 01 Aug 2012 07:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2012/08/01/moving-from-search-to-apps/</guid>
      <description><![CDATA[&#160;  For the last seven years, since I joined Fast Search &amp; Transfer in 2005, search...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>For the last seven years, since I joined Fast Search &amp; Transfer in 2005, search technology has been my core interest and expertise. It has been a fun journey, bringing me from Melbourne to San Francisco, via Amman and Paris. But just as rewarding, is the journey from novice to expert – from seeing search as “black box” magic, to presenting search technology at conferences like TechEd and The SharePoint Conference.</p>  <p>But, there is a time for everything. And as Office 2013 is appearing, making search more accessible to everyone than ever before, I am leaving the stage. I was lucky enough to be offered a new position here at Microsoft, this time in the group named “Developer Platform Evangelism”. Here, I will be a Technical Evangelist, focusing on helping developers build great apps for Windows 8.</p>  <p>This new role looks like it will fit perfectly with my interests and skills. Design and user interfaces have always been a very interesting topics in my view. At the same time, “Once a developer, always a developer” – nothing is like opening <a href="https://www.microsoft.com/visualstudio/11/en-us/downloads">your favorite editor</a>, writing a few lines of code, compile, run and then viewing your creation come alive on the screen. It was great fun with Basic on my Commodore 64, and is way more elegant and intuitive using JavaScript or C# to create blazing apps for Windows 8.</p>  <p>While I will still reply to the odd search question now and then, I look forward to engaging with a new community. Hopefully, I will also gain insights that I find worth sharing on this blog. And if you have any question related to Windows 8 apps, whether it’s how to get started, design discussions or how to get published<a name="_GoBack"></a> in the Windows store – please reach out to me, and I will doing whatever I can to help you out.</p>  <p>Thanks for ride, and come join the next wave – Windows 8!</p>  <p>Have a great day everyone!</p>]]></content:encoded>
    </item>
    <item>
      <title>Contextual search not working with alternate accessing mapping</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/contextual-search-not-working-with-alternate-accessing-mapping</link>
      <pubDate>Thu, 10 May 2012 06:43:32 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2012/05/10/contextual-search-not-working-with-alternate-accessing-mapping/</guid>
      <description><![CDATA[&#160;  Background  In our project, we are exposing the same SharePoint farms both outside and...]]></description>
      <content:encoded><![CDATA[<h2>&#160;</h2>  <h2>Background</h2>  <p>In our project, we are exposing the same SharePoint farms both outside and inside the company firewalls. For this, we are using Alternate Access Mapping (AAM) with a setup like this:</p>  <table border="0" cellspacing="0" cellpadding="2" width="455"><tbody>     <tr>       <td valign="top" width="99"><strong>Zone</strong></td>       <strong></strong>        <td valign="top" width="167"><strong>Url</strong></td>       <strong></strong>        <td valign="top" width="187"><strong>Purpose</strong></td>     </tr>      <tr>       <td valign="top" width="99">Default</td>        <td valign="top" width="167"><a href="https://team.example.com">https://team.example.com</a></td>        <td valign="top" width="187">Internal users and crawling</td>     </tr>      <tr>       <td valign="top" width="99">External</td>        <td valign="top" width="167"><a href="https://team.example.com">https://team.example.com</a></td>        <td valign="top" width="187">External users</td>     </tr>   </tbody></table>  <p>IMPORTANT NOTE: A dedicated services farm was used for crawling the team sites. As we later understood, it otherwise would have worked. Read on the see why.</p>  <p>&#160;</p>  <h2>Problem</h2>  <p>In this scenario, the contextual search features, e.g. “This Site” and “This list” don’t work when accessing the site externally. The users never got any results:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/2480.https---no-results_3D91C46C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/2480.https_2D002D002D00_no_2D00_results_5F00_3D91C46C.png"><img style="display: inline; background-image: none;" title="https - no results" border="0" alt="https - no results" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/8764.https---no-results_thumb_00AD1CCD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/8764.https_2D002D002D00_no_2D00_results_5F00_thumb_5F00_00AD1CCD.png" width="504" height="335" /></a></p>  <p>But the user who accessed via the “Default” zone got results:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/0743.http---results_517B3135.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/0743.http_2D002D002D00_results_5F00_517B3135.png"><img style="display: inline; background-image: none;" title="http - results" border="0" alt="http - results" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/2806.http---results_thumb_56E9A1D9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/2806.http_2D002D002D00_results_5F00_thumb_5F00_56E9A1D9.png" width="504" height="327" /></a></p>  <p>And, importantly, the external users got search results if the search via the “Search Center”. It was only the contextual search which failed.</p>  <p>&#160;</p>  <h2>Solution</h2>  <p>With help from my colleague, Jon Waite, I understood that the problem is due to the dedicated services farm not being aware of the AAM settings on the farm that is crawled. Fortunately, SharePoint has provided an easy solution for giving the crawling farm a hint about this, via “External Resource Mapping”. This is the one link under “Alternate Access Mapping” which I previous never understood the purpose of:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/4456.Map-to-external-resource_27B7B642.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/4456.Map_2D00_to_2D00_external_2D00_resource_5F00_27B7B642.png"><img style="display: inline; background-image: none;" title="Map to external resource" border="0" alt="Map to external resource" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/0827.Map-to-external-resource_thumb_34B19653.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/0827.Map_2D00_to_2D00_external_2D00_resource_5F00_thumb_5F00_34B19653.png" width="404" height="126" /></a></p>  <p>If you click on this link, you get a description which is partly misleading:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/7271.External-resource-mapping_3AF86CE1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/7271.External_2D00_resource_2D00_mapping_5F00_3AF86CE1.png"><img style="display: inline; background-image: none;" title="External resource mapping" border="0" alt="External resource mapping" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/2084.External-resource-mapping_thumb_1351F0B7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/2084.External_2D00_resource_2D00_mapping_5F00_thumb_5F00_1351F0B7.png" width="604" height="199" /></a></p>  <p>It says it can be used for mapping “a resource outside of SharePoint”. More correct would be to say “outside this SharePoint farm”, i.e., on a remote farm, which is exactly what we need. To use it, we fill in values as in the example above, click “Save”. Then click “Add Internal URLs”, where we specify the “Extranet” URL. Again, somewhat confusing naming. The end result should look like this:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/0830.team-mapping_04A744D2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/0830.team_2D00_mapping_5F00_04A744D2.png"><img style="display: inline; background-image: none;" title="team mapping" border="0" alt="team mapping" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/1732.team-mapping_thumb_63B3D22A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/1732.team_2D00_mapping_5F00_thumb_5F00_63B3D22A.png" width="604" height="166" /></a></p>  <p>And that’s all you need to do! No recrawl or other updates are needed. I love it when things just work! <img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smilefjes" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/4544.wlEmoticon-smile_1E9B04F4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/4544.wlEmoticon_2D00_smile_5F00_1E9B04F4.png" /></p>]]></content:encoded>
    </item>
    <item>
      <title>How to disable phonetic search for the federated people search</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/how-to-disable-phonetic-search-for-the-federated-people-search</link>
      <pubDate>Thu, 03 Nov 2011 07:21:26 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2011/11/03/how-to-disable-phonetic-search-for-the-federated-people-search/</guid>
      <description><![CDATA[I was at a presentation during the SharePoint Conference 2011 where one of the presenters said that...]]></description>
      <content:encoded><![CDATA[<p>I was at a presentation during the <a href="https://www.mssharepointconference.com/Pages/default.aspx">SharePoint Conference 2011</a> where one of the presenters said that she would like to have the option of turning off the phonetic search option when showing federated people results. She said she hoped this would be added as an ability in the next version of SharePoint.</p>  <p>I thought there had to be a solution to this, and finally the solution struck me. It was a matter of changing the federation location in a particular way. First of all, an example, using the <a href="https://technet.microsoft.com/en-us/evalcenter/ee424282.aspx">downloadable VM image with SharePoint and FAST</a>. If you search for “contoso”, you get this result:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/6076.search-for-bar_627E622C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/6076.search_2D00_for_2D00_bar_5F00_627E622C.png"><img style="display: inline; background-image: none;" title="search for bar" border="0" alt="search for bar" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/6076.search-for-bar_thumb_065713BA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/6076.search_2D00_for_2D00_bar_5F00_thumb_5F00_065713BA.png" width="426" height="204" /></a></p>  <p>We want to avoid this, and just get people matches in names here, as shown here:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/7450.search-for-contoso---name-only_5C9398C6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/7450.search_2D00_for_2D00_contoso_2D002D002D00_name_2D00_only_5F00_5C9398C6.png"><img style="display: inline; background-image: none;" title="search for contoso - name only" border="0" alt="search for contoso - name only" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/2656.search-for-contoso---name-only_thumb_0144B03E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/2656.search_2D00_for_2D00_contoso_2D002D002D00_name_2D00_only_5F00_thumb_5F00_0144B03E.png" width="431" height="178" /></a></p>  <p>To do this, we go into Central Administration and navigate to the search application and then “Federated Locations”, as shown here:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/8535.People-search-federated-location_65BFAE3A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/8535.People_2D00_search_2D00_federated_2D00_location_5F00_65BFAE3A.png"><img style="display: inline; background-image: none;" title="People search federated location" border="0" alt="People search federated location" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/metablogapi/2766.People-search-federated-location_thumb_0351893A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81-metablogapi/2766.People_2D00_search_2D00_federated_2D00_location_5F00_thumb_5F00_0351893A.png" width="430" height="322" /></a></p>  <p>Change the “Query Template” under “Location Information” from</p>  <p><font face="Courier New">{searchTerms}</font></p>  <p>to</p>  <p><font face="Courier New">{searchTerms} AND (FirstName:{searchTerms} OR LastName:{searchTerms})</font></p>  <p>Click OK, and you’re done. </p>  <p>NOTE 1: This syntax seems a little more verbose than necessary, but I found that without the initial “{searchTerms}” entry, nothing was returned.</p>  <p>NOTE 2: There seems to be a small delay before this changed is picked up by the front-end, so please retry after a couple of minutes if it does not work immediately.</p>]]></content:encoded>
    </item>
    <item>
      <title>Export SharePoint Wiki to Word/PDF without 3rd party tools</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/export-sharepoint-wiki-to-wordpdf-without-3rd-party-tools</link>
      <pubDate>Fri, 09 Sep 2011 01:35:00 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2011/09/09/export-sharepoint-wiki-to-wordpdf-without-3rd-party-tools/</guid>
      <description><![CDATA[Background
In our project, we use the SharePoint 2010 wiki to document our solutions. We needed to...]]></description>
      <content:encoded><![CDATA[<h2>Background</h2>
<p>In our project, we use the SharePoint 2010 wiki to document our solutions. We needed to export this in PDF format when releasing the solution to production, so that we could pass over a formal documentation set to the operations team, and not just refer to a constantly changing wiki, which also had a number of pages irrelevant to operations. We looked at some 3rd party solutions, such as the <a title="Wiki Publisher from Bamboo solutions" href="https://store.bamboosolutions.com/sharepoint-wiki-publisher.aspx">Wiki Publisher from Bamboo solutions</a>, but it did not do what we wanted. Fortunately, our project manager, found&nbsp;<a title="a solution" href="https://tlt.stonybrook.edu/FacultyServices/Software/Documents/Export_SharePoint_Wiki.pdf">a solution</a>. We extended this a bit, to better fit our need and to create a professionally looking Word document, which we could also export to PDF, of course.</p>
<h2>How to export Wiki to Word</h2>
<p>First, we added three additional fields to our Wiki library:</p>
<table style="border: 0px solid #000000; background-color: #e7e5e4;" border="0" frame="box">
<tbody>
<tr>
<td><strong>Name</strong></td>
<td><strong>Purpose</strong></td>
<td><strong>Type</strong></td>
<td><strong>Valid values</strong></td>
</tr>
<tr>
<td>Printout in System Documentation</td>
<td>Exclusion of pages</td>
<td>Choice</td>
<td>yes/no</td>
</tr>
<tr>
<td>Printout Section Number</td>
<td>High level sorting</td>
<td>Choice</td>
<td>10 - Intro<br />20 - Services<br />30 - migration<br />etc.</td>
</tr>
<tr>
<td>Printout order inside section</td>
<td>Lower level sorting</td>
<td>Choice</td>
<td>10, 20, 30, etc.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>All these fields were added to the standard view, and we created a datasheet view for more efficient setting of these values.</p>
<p>Then we created a new view, called "PrinterFriendlyView" as follows:</p>
<ol>
<li>Remove all columns except "Wiki Content"</li>
<li>Set sorting to use the "Printout..." fields described above</li>
<li>Set filter to be "Printout in System Documentation" = "yes"</li>
<li>Set "Style" to "Newsletter"</li>
<li>Set "Item Limit" to 999</li>
</ol>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/2604.PrinterFriendlyView.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/2604.PrinterFriendlyView.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/2604.PrinterFriendlyView.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/400x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/2604.PrinterFriendlyView.png" /></a></p>
<p>Open this new view, and follow these steps:</p>
<ol>
<li>Mark all the text (this is a little awkward, I found it easiest to start from the bottom and go upwards)</li>
<li>Open a blank document in Word and paste in all the content</li>
<li>You will probably get some warnings, where clicking "No" is probably the best (I didn't test clicking "Yes")<br />Warning text: "This operation will require copying many styles. Do you want to use Normal style instead?"<br />Warning text:</li>
<li>Change "Verdana, font 16" to "Heading 1" style (this may differ for your wiki - hopefully you have some consistent formatting for page headings that you can use)<br />a. Open the "Search/replace" dialog in Word<br />b. Click on "Replace"<br />c. Click on "More"<br />d. Click in the "Replace with" box and then click the "Format" button at the very bottom. Choose "Style -&gt; Heading 1"<br />e. Click in the "Find what" box and then click the "Format" button at the very bottom. Choose "Font -&gt; Verdana, 16pt"<br />f. Click "Replace All"<br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/5808.Search%20and%20replace%20Word%20formatting.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/5808.Search-and-replace-Word-formatting.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/5808.Search%20and%20replace%20Word%20formatting.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/450x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/5808.Search-and-replace-Word-formatting.png" /></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/8371.Search%20and%20replace%20Word%20formatting.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/8371.Search-and-replace-Word-formatting.png"></a></li>
<li>Modify the style for "Heading 1", paragraph setting, to include a page break before each occurrence.</li>
<li>Go to the start of the document</li>
<li>Add a heading:"System Documentation", using "Title" style</li>
<li>Add a text underneath: "Table of Contents, using "SubTitle" style</li>
<li>Underneath, include a Table of Contents, using these steps (assuming Word 2010):<br />a. In ribbon, click "References"<br />b. Click "Table of Contents"<br />c. At the bottom of the list, click "Insert Table of Contents..."<br />d. In the creation dialog, set "Show levels" to 1, and click OK.<br />e. Verify that the table of contents makes sense, you may, e.g.,&nbsp;have some extra paragraphs marked as "Heading 1" where they should not have been.</li>
<li>Choose "Save As" and set format to PDF.</li>
</ol>
<p>Voila, your nice, professional looking PDF is ready for sending to your operations team!</p>
<p>The PDF will even have clickable links in the table of contents, thanks to the nice Word-to-PDF export functionaly.</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Wider refinement panel - with no access to backend</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/wider-refinement-panel-with-no-access-to-backend</link>
      <pubDate>Tue, 16 Aug 2011 06:29:14 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2011/08/16/wider-refinement-panel-with-no-access-to-backend/</guid>
      <description><![CDATA[I had the challenge that the standard search refiners were not wide enough to accomodate the values...]]></description>
      <content:encoded><![CDATA[<p>I had the challenge that the standard search refiners were not wide enough to accomodate the values we had coming back. In the "Refinement" web part, you can increase the number of characters that are displayed. So I started with that. Here is a similar scenario using the downloadable demo VM from Microsoft:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/1033.refinement-panel-trimmed-strings.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/1033.refinement_2D00_panel_2D00_trimmed_2D00_strings.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/1033.refinement-panel-trimmed-strings.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/163x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/1033.refinement_2D00_panel_2D00_trimmed_2D00_strings.png" /></a></p>
<p>As you can see, the site names get trimmed, which doesn't look too good. If you edit the web part, you can increase the number of characters to display:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/6663.refinement-panel-settings.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/6663.refinement_2D00_panel_2D00_settings.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/6663.refinement-panel-settings.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/231x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/6663.refinement_2D00_panel_2D00_settings.png" /></a></p>
<p>Now, the strings are no longer trimmed. But if they are too long, a line break is inserted, which can look awkward, too. (And it was much worse in our case, since the strings were so long that they extended outside the web part!)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/7384.refinement-panel-line-break.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/7384.refinement_2D00_panel_2D00_line_2D00_break.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/7384.refinement-panel-line-break.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/172x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/7384.refinement_2D00_panel_2D00_line_2D00_break.png" /></a></p>
<p>There is no setting for increasing the width of the web part itself, and we did not have access to edit the page layout or CSS files. So, we turned to JavaScript for a quick and easy solution! We added a "Content Editor" web part to the top of the page, and removed it's styling, so that it was invisible to the user. Then we added the following lines of code:</p>
<pre class="scroll"><code class="js">&lt;script language="javascript"&gt;<br /> var existing = window.onload;<br /> </code></pre>
<pre class="scroll"><code class="js"> /* Needed to make sure existing SharePoint onload JavaScript still gets executed! */<br /> window.onload = function() {<br /> <br /> if(typeof(existing) == "function"){ existing(); }<br /> /* resize refiner width */<br /> document.getElementById('SRCHREF').style.width="250px"; <br /> } </code></pre>
<pre class="scroll"><code class="js">&lt;/script&gt;<br /> </code></pre>
<p><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;">There were three challenges to getting the above code to run properly:</span></p>
<ol>
<li><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;">Finding out that 'SRCHREF' was the element id of the refinement panel</span></span></li>
<li><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;">Making sure the code ran after the page was fully loaded, since the refinements are displayed asyncronously</span></span></li>
<li><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;">Making sure existing "onload" code continued to run, otherwise the ribbon functionality was broken</span></span></li>
</ol>
<p><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;">And now, everything looks just the way we want:</span></span></p>
<p><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/3463.refinement-panel-as-wanted.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/3463.refinement_2D00_panel_2D00_as_2D00_wanted.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/3463.refinement-panel-as-wanted.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/208x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-81/3463.refinement_2D00_panel_2D00_as_2D00_wanted.png" /></a></span></span></p>
<p><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"></span></p>
<p><span style="color: black; font-family: 'Tahoma','sans-serif'; font-size: 10pt;"></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Rank tuning in FAST Search for SharePoint - the quick, easy and flexible way</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/rank-tuning-in-fast-search-for-sharepoint-the-quick-easy-and-flexible-way</link>
      <pubDate>Wed, 02 Feb 2011 01:19:00 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2011/02/02/rank-tuning-in-fast-search-for-sharepoint-the-quick-easy-and-flexible-way/</guid>
      <description><![CDATA[On TechNet, there is documentation on how to tune ranking using a custom rank profile. This...]]></description>
      <content:encoded><![CDATA[<p>On <a target="_blank" href="https://technet.microsoft.com/en-us/library/ff453912.aspx" title="TechNet">TechNet</a>, there is documentation on how to tune ranking using a custom rank profile. This procedure is somewhat cumbersome, and does not allow the full flexibility provided by the <a href="https://msdn.microsoft.com/en-us/library/ff394462.aspx#fqloperator_xrank" title="FQL xrank operator">FQL xrank operator</a>. Fortunately, there is an easier way, which also opens up for arbitrary xrank statements. Let us take an example. We want to boost&nbsp;"aspx" documents to the top of the result list.</p>
<p>Open a PowerShell on your SharePoint server and run the following commands:</p>
<p style="padding-left: 30px"><span style="font-family: 'courier new', 'courier';">Add-PSSnappin *sharepoint*<br />New-SPEnterpriseSearchQueryScope -SearchApplication "FAST Query SSA" -Name "Boost aspx" -Description "A scope to boost aspx pages" -DisplayInAdminUI 1 -ExtendedSearchFilter "xrank(size:range(0,max), </span><span style="font-family: 'courier new', 'courier';"><em>fileextension:aspx, boost=5000</em></span><span style="font-family: 'courier new', 'courier';">, boostall=yes)"</span></p>
<p>The key part here is towards the end:</p>
<p style="padding-left: 30px">fileextension:aspx, boost=5000</p>
<p>This will add 5000 extra "rank points", which is typically enough to always bring these documents to the top of the result list. TIP: In order to get an idea of what number of points make sense, and also to debug this process, it can be very useful to see the current rank values. This is easily done by applying the first part of&nbsp;<a href="https://blogs.msdn.com/b/thomsven/archive/2011/01/26/seeing-what-actual-gets-indexed.aspx" title="my previous posting">my previous posting</a>, to add the "Show all" toggle.</p>
<p>NOTE: This example uses a simple property and a simple value. You are free to boost based on multiple values at the same time, with different boost leves. This is done by putting multiple xrank's inside one another, like this: xrank( xrank(..., author:thomas, boost=500, ...), fileextension:docx, boost=2000, ...). You can also boost based on ranges, e.g. xrank(..., write&gt;2011-01-01, boost=1000), to boost documents written this year. Unfortunately, there is no easy way to say "written last 3 months", but a workaround would be a scheduled script which updated the value, e.g., every night.</p>
<p>OK, let's try it out.&nbsp;Bring up the Search center, run a query, and click "Edit Page":</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/3404.edit-page.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/3404.edit_2D00_page.png" border="0" /></p>
<p>&nbsp;Next, click "Edit webpart" on the "Search core results" web part:</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/1447.edit-web-part.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/1447.edit_2D00_web_2D00_part.png" border="0" /></p>
<p>Under "Location Properties", fill in the "Scope" field with the name of your scope ("Boost aspx" in this case).</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/5661.web-part-location.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/5661.web_2D00_part_2D00_location.png" border="0" /></p>
<p>Click "OK" and then click "Save" in the upper left part of the ribbon. Now, you can try running your query, and probably get this:</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/0317.scope-does-not-exist.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/0317.scope_2D00_does_2D00_not_2D00_exist.png" border="0" /></p>
<p>Hey, that failed! Why? There is a job which runs every 15 minutes, publishing these scopes. Depending on timing, it may take up to 15 minutes before your scope is active. But after that, you should be getting results ranked according to your xrank-FQL:</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/6746.aspx-on-top.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/6746.aspx_2D00_on_2D00_top.png" border="0" /></p>
<p>There are some peculiarities in the FQL above, which may be worth explaining:</p>
<p style="padding-left: 30px;"><span style="font-family: 'courier new', 'courier';">size:range(0,max)</span></p>
<p>is used as a "match all" dummy query. This is due to the way xrank was implemented. Ideally, your end user query should have been there instead, but there is no easy way to achieve that. This works just as well since the end user query is "and'ed" to this xrank by the webpart.</p>
<p style="padding-left: 30px;">&nbsp;<span style="font-family: 'courier new', 'courier';">boostall=yes</span></p>
<p>is even harder to explain. The default is "no", for performance reasons, since a value of "yes" will give somewhat lower query throughput. But in enterprise search scenarios, the difference will be negligible in the large major of cases.</p>
<p>&nbsp;Thanks to Vance Miller who first documented the approach!</p>]]></content:encoded>
    </item>
    <item>
      <title>See what actually gets indexed in FAST</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/see-what-actually-gets-indexed-in-fast</link>
      <pubDate>Tue, 25 Jan 2011 21:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2011/01/25/see-what-actually-gets-indexed-in-fast/</guid>
      <description><![CDATA[When FAST Search for SharePoint indexes documents, it uses an internal format known as Fixml (Fast...]]></description>
      <content:encoded><![CDATA[<p>When FAST Search for SharePoint indexes documents, it uses an internal format known as Fixml (Fast Internal XML). This represents the exact data which get indexed. Being able to inspect this can be useful for troubleshooting such as</p>
<ul>
<li>lemmatised forms of nouns and adjectives</li>
<li>refiner values</li>
<li>tokenization of terms</li>
<li>etc.</li>
</ul>
<p>&nbsp;Fixml is stored in gzip'ed files under %FASTSEARCH/data/data_fixml. Un-gzip'ing them is fairly straightforward using command line tools that come with FAST, but knowing which file to extract is far less trivial. I will show you how you can do this easily. The prerequisites for this approach is:</p>
<ol>
<li>SharePoint access rights to do "Edit page" on the FAST Search Center's result page.</li>
<li>File access to the data_fixml folder (on the FAST server(s) doing indexing)&nbsp;</li>
</ol>
<p>OK, so let's get started. First, run a query in a FAST Search Center, so you get a results page, and click "Edit Page":</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/6712.edit-fast-result-page.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/6712.edit_2D00_fast_2D00_result_2D00_page.png" border="0" /></p>
<p>Then, go down to the "Core Search Results" web part and choose "Edit web part":</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/3404.edit-search-core-results-web-part.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/3404.edit_2D00_search_2D00_core_2D00_results_2D00_web_2D00_part.png" border="0" /></p>
<p>Scrolling up to the top right-hand corner, you open the "Display Properties" of the web part like this:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/0385.web-part-details.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/0385.web_2D00_part_2D00_details.png" border="0" /></p>
<p>Uncheck the "Use localization visualization" to enable editing of the "Fetched Properties" setting. Copy out the text and edit it in an editor to add the last two items ( &lt;Column Name="internalid"/&gt; &lt;Column Name="contentid"/&gt; ), shown in bold here:</p>
<p>&lt;Columns&gt;</p>
<p style="padding-left: 30px">&lt;Column Name="WorkId"/&gt;<br />&lt;Column Name="Rank"/&gt;<br />&lt;Column Name="Title"/&gt;<br />&lt;Column Name="Author"/&gt;<br />&lt;Column Name="Size"/&gt;<br />&lt;Column Name="Path"/&gt;<br />&lt;Column Name="Description"/&gt;<br />&lt;Column Name="Write"/&gt;<br />&lt;Column Name="SiteName"/&gt;<br />&lt;Column Name="CollapsingStatus"/&gt;<br />&lt;Column Name="HitHighlightedSummary"/&gt;<br />&lt;Column Name="HitHighlightedProperties"/&gt;<br />&lt;Column Name="ContentClass"/&gt;<br />&lt;Column Name="IsDocument"/&gt;<br />&lt;Column Name="PictureThumbnailURL"/&gt;<br />&lt;Column Name="Url"/&gt;<br />&lt;Column Name="ServerRedirectedUrl"/&gt;<br />&lt;Column Name="FileExtension"/&gt;<br />&lt;Column Name="SpSiteUrl"/&gt;<br />&lt;Column Name="docvector"/&gt;<br />&lt;Column Name="fcocount"/&gt;<br />&lt;Column Name="fcoid"/&gt;<br />&lt;Column Name="PictureHeight"/&gt;<br />&lt;Column Name="PictureWidth"/&gt;<br /><strong>&lt;Column Name="internalid"/&gt;<br />&lt;Column Name="contentid"/&gt;</strong></p>
<p><br />&lt;/Columns&gt;</p>
<p><strong>Note:</strong> when pasting the above XML snippet, it will have to all be on one line!</p>
<p>&nbsp;Next, click on the "XSL Editor" and replace the default XSLT with the contents of the attached zip file.</p>
<p>You are all set, and can click "OK" at the bottom of the web part editor, and then "Save &amp; Close" in the ribbon on the top of the page. Your screen should now look like this:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/2514.show-all-link-appears.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/2514.show_2D00_all_2D00_link_2D00_appears.png" border="0" /></p>
<p>If you click on the "Show all" link, it will toggle showing all columns returned from FAST. As we just added "internalid" and "contentid", this will appear at the end of the list</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/8737.show-all-columns.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/8737.show_2D00_all_2D00_columns.png" border="0" />:</p>
<p>Next, we need a PowerShell script which is available in the TechNet Script Repository, <a href="https://gallery.technet.microsoft.com/scriptcenter/14105abb-29da-43fd-90f4-ac12f1a0233a">Get-FastFixml</a>. Download this code and install it somewhere on your FAST indexing server. Then, run it with internalid and contentid for the relevant document as input</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/8737.get-fastfixml.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/8737.get_2D00_fastfixml.png" border="0" />:</p>
<p>As you can see, it has written the full Fixml to C:\FASTSEARCH\Var\Fixml.xml. We can open this file in an editor, and see for example how "deep dive" has been lemmatized to "deep deeper deepest" and "dive diva divas":</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/7536.fixml-in-notepad.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/7536.fixml_2D00_in_2D00_notepad.png" border="0" />:</p>
<p>&nbsp;So, we can try searching for "deeper diva", and see that it returns the expected results, and even highlights "deep dive"!</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/6557.deeper-diva.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/6557.deeper_2D00_diva.png" border="0" /></p>
<p>Reading the fixml contents&nbsp;can be&nbsp;challenging at first. Here is a quick overview of the most important tag name conventions:</p>
<table border="0">
<tbody>
<tr>
<td><strong>Prefix</strong></td>
<td><strong>Sample</strong></td>
<td><strong>Content</strong></td>
</tr>
<tr>
<td>bcat</td>
<td>bcatcontent</td>
<td>Composite field, for searching across fields</td>
</tr>
<tr>
<td>bconf&lt;level&gt;</td>
<td>bconf7 src="title"</td>
<td>Represents each field, with level, inside bcat</td>
</tr>
<tr>
<td>bcon</td>
<td>bconlanguage</td>
<td>Separately searchable field</td>
</tr>
<tr>
<td>batv</td>
<td>batvwrite</td>
<td>Sortable field</td>
</tr>
<tr>
<td>bavn</td>
<td>bavnauthor</td>
<td>Refinable field</td>
</tr>
<tr>
<td>bsum</td>
<td>bsumteaser</td>
<td>Static result field - show "as is"</td>
</tr>
<tr>
<td>bsrc</td>
<td>bsrcbody</td>
<td>Dynamic result field - matched to query terms</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>I must admit that two of my colleagues did all the hard work here:</p>
<ul>
<li>Aaron Grant did the "Show All" toggle XSL</li>
<li>Brent Groom did the Get-FASTFixml</li>
</ul>
<p>Thank you very much, guys!</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/12/03/46/SearchCoreResults_ShowAll.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-12-03-46/SearchCoreResults_5F00_ShowAll.zip">SearchCoreResults_ShowAll.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Debugging and tracing FAST Search pipeline extensibility stages</title>
      <link>https://docs.microsoft.com/archive/blogs/thomsven/debugging-and-tracing-fast-search-pipeline-extensibility-stages</link>
      <pubDate>Thu, 23 Sep 2010 04:15:00 GMT</pubDate>
      <dc:creator><![CDATA[Thomas Svensen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/thomsven/2010/09/23/debugging-and-tracing-fast-search-pipeline-extensibility-stages/</guid>
      <description><![CDATA[The pipeline extensibility stage that comes with FAST Search for SharePoint is a powerful tool, but...]]></description>
      <content:encoded><![CDATA[<p>The pipeline extensibility stage that comes with FAST Search for SharePoint is a powerful tool, but it can be a little awkward to work with. The official MSDN documentation, <a href="https://msdn.microsoft.com/en-us/library/ff795801.aspx#pipeline-ext-ifilter">https://msdn.microsoft.com/en-us/library/ff795801.aspx#pipeline-ext-ifilter</a>, gives you enough to get you started, but I though I would share some additional best practices. Specifically, I wanted to be able to see what came into the stage and what was the resulting output. Below, I will walk you through the required steps to get files generated as shown here:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/4744.Screenshot-input-output-xml.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/4744.Screenshot_2D00_input_2D00_output_2D00_xml.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>The files contains an exact copy of the input and output to the custom stage, and a useful tip is to always include the URL as input, even when it is not required for the business logic. This makes it much easier to see what sort of documents came with what properties</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/81/0272.Screenshot-input-xml.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-40-81/0272.Screenshot_2D00_input_2D00_xml.jpg" border="0" />:</p>
<p>&nbsp;</p>
<p><b>NOTE:</b> I recommend that you familiarize yourself with the code sample in the MSDN documentation (see above link) before continuing. Otherwise, the code may be a little hard to follow.</p>
<p>So, extending on the sample code from the documentation, I wrapped the main logic in inside a parent method.</p>
<pre style="font-family: consolas"><pre style="font-family: consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;Handle&nbsp;the&nbsp;basic&nbsp;logging&nbsp;and&nbsp;exception&nbsp;handling</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">static</span>&nbsp;<span style="color: blue">int</span>&nbsp;Main(<span style="color: blue">string</span>[]&nbsp;args)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">try</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">String</span>&nbsp;inputXmlFile&nbsp;=&nbsp;args[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">String</span>&nbsp;outputXmlFile&nbsp;=&nbsp;args[1];<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteLogFile(inputXmlFile,&nbsp;<span style="color: #a31515">"-input"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoProcessing(inputXmlFile,&nbsp;outputXmlFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteLogFile(outputXmlFile,&nbsp;<span style="color: #a31515">"-output"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">catch</span>&nbsp;(<span style="color: #2b91af">Exception</span>&nbsp;e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;This&nbsp;will&nbsp;end&nbsp;up&nbsp;in&nbsp;the&nbsp;crawl&nbsp;log,&nbsp;since&nbsp;exit&nbsp;code&nbsp;!=&nbsp;0</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">"Failed:&nbsp;"</span>&nbsp;+&nbsp;e&nbsp;+&nbsp;<span style="color: #a31515">"/"</span>&nbsp;+&nbsp;e.StackTrace);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">return</span>&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">return</span>&nbsp;0;<br />&nbsp; &nbsp; &nbsp; &nbsp; }</pre>
<br /><br /></pre>
<p>What does this give us:</p>
<ol>
<li>We can log what came in to our process</li>
<li>We log what our process produced based on that</li>
<li>If processing fails - the actual error will be visible in the UI crawl log</li>
</ol>
<p><b>NOTE</b>: An additional tip here is to always include the URL of the as input parameter, even when it is not really needed for processing. Then it will be logged as part of the "input"-logging, and will give you a reference to the document processed.</p>
<p>But, as you may know, the pipeline extensibility stage is not allowed to write to the local file system, except for in one single location:</p>
<p><span style="font-family: courier new,courier;"><span style="color: #008080;">&nbsp;&lt;user-home-directory&gt;\appdata\LocalLow</span><br /></span></p>
<p><br />Consequently, this is what our logging routine will look like:</p>
<pre style="font-family: consolas;"><pre style="font-family: consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;Write&nbsp;the&nbsp;input&nbsp;file&nbsp;to&nbsp;a&nbsp;location&nbsp;the&nbsp;application&nbsp;has&nbsp;access&nbsp;to&nbsp;write&nbsp;in.</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">static</span>&nbsp;<span style="color: blue">void</span>&nbsp;WriteLogFile(<span style="color: blue">string</span>&nbsp;inputFile,&nbsp;<span style="color: blue">string</span>&nbsp;suffix)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">String</span>&nbsp;pipelineInputData&nbsp;=&nbsp;<span style="color: #a31515">@"c:\users\"</span>&nbsp;+&nbsp;<span style="color: #2b91af">Environment</span>.UserName&nbsp;+&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #a31515">@"\appdata\LocalLow\PipelineLog"</span>;<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;Enable/disable&nbsp;debugging&nbsp;in&nbsp;real-time&nbsp;by&nbsp;creating/renaming&nbsp;the&nbsp;log&nbsp;directory</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">if</span>&nbsp;(<span style="color: #2b91af">Directory</span>.Exists(pipelineInputData))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">Directory</span>.CreateDirectory(pipelineInputData);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">string</span>&nbsp;outFile&nbsp;=&nbsp;<span style="color: #2b91af">Path</span>.Combine(pipelineInputData,&nbsp;timestamp&nbsp;+&nbsp;<span style="color: #a31515">"-"</span>&nbsp;+&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">MethodBase</span>.GetCurrentMethod().DeclaringType.Name&nbsp;+&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;suffix&nbsp;+&nbsp;<span style="color: #a31515">".xml"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">File</span>.Copy(inputFile,&nbsp;outFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></pre>
<br /><br /><br /><span style="font-family: arial,helvetica,sans-serif;">Some points worth noting:</span></pre>
<ol>
<li>We check for the existence of the logging directory ("PipelineLog"), giving us the ability to turn debugging output on/off in real-time</li>
<li>We use a timestamp constant, so that input and output can be easily matched</li>
</ol>
<p>
That's about it, now we just need to define the constants we have been referencing:</p>
<p><span style="font-family: courier new,courier;">
</span></p>
<pre style="font-family: consolas"><pre style="font-family: consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">public</span>&nbsp;<span style="color: blue">static</span>&nbsp;<span style="color: blue">readonly</span>&nbsp;<span style="color: #2b91af">Guid</span>&nbsp;CrawledCategorySharepoint&nbsp;=&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">Guid</span>(<span style="color: #a31515">"00130329-0000-0130-c000-000000131346"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">public</span>&nbsp;<span style="color: blue">static</span>&nbsp;<span style="color: blue">readonly</span>&nbsp;<span style="color: #2b91af">Guid</span>&nbsp;CrawledCategoryUserDefined&nbsp;=&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">Guid</span>(<span style="color: #a31515">"D5CDD505-2E9C-101B-9397-08002B2CF9AE"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">public</span>&nbsp;<span style="color: blue">static</span>&nbsp;<span style="color: blue">readonly</span>&nbsp;<span style="color: #2b91af">String</span>&nbsp;timestamp&nbsp;=&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">DateTime</span>.Now.ToString(<span style="color: #a31515">"yyyyMMddHHmmss.ffff"</span>);<br /></pre>
<br /><br /><br />And the main processing will be handled very much like suggested in the MSDN documentation:</pre>
<p><span style="font-family: courier new,courier;">
</span></p>
<pre style="font-family: consolas"><pre style="font-family: consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;Actual&nbsp;processing</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">static</span>&nbsp;<span style="color: blue">void</span>&nbsp;DoProcessing(<span style="color: blue">string</span>&nbsp;inputFile,&nbsp;<span style="color: blue">string</span>&nbsp;outputFile)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">XDocument</span>&nbsp;inputDoc&nbsp;=&nbsp;<span style="color: #2b91af">XDocument</span>.Load(inputFile);<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;Fetch&nbsp;the&nbsp;content&nbsp;type&nbsp;property&nbsp;from&nbsp;the&nbsp;input&nbsp;item</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">var</span>&nbsp;res&nbsp;=&nbsp;<span style="color: blue">from</span>&nbsp;cp&nbsp;<span style="color: blue">in</span>&nbsp;inputDoc.Descendants(<span style="color: #a31515">"CrawledProperty"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">where</span>&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">Guid</span>(cp.Attribute(<span style="color: #a31515">"propertySet"</span>).Value).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Equals(CrawledCategorySharepoint)&nbsp;&amp;&amp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cp.Attribute(<span style="color: #a31515">"propertyName"</span>).Value&nbsp;==&nbsp;<span style="color: #a31515">"ows_ContentType"</span>&nbsp;&amp;&amp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cp.Attribute(<span style="color: #a31515">"varType"</span>).Value&nbsp;==&nbsp;<span style="color: #a31515">"31"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">select</span>&nbsp;cp.Value;<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;Create&nbsp;the&nbsp;output&nbsp;item</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #2b91af">XElement</span>&nbsp;outputElement&nbsp;=&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">XElement</span>(<span style="color: #a31515">"Document"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">string</span>&nbsp;mappedTo&nbsp;=&nbsp;<span style="color: #a31515">"nocontenttype"</span>;<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//&nbsp;Add&nbsp;a&nbsp;crawled&nbsp;property&nbsp;if&nbsp;a&nbsp;content&nbsp;type&nbsp;was&nbsp;present</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">if</span>&nbsp;(res.Count()&nbsp;&gt;&nbsp;0&nbsp;&amp;&amp;&nbsp;res.First().Length&nbsp;&gt;&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mappedTo&nbsp;=&nbsp;<span style="color: #a31515">"hascontenttype"</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outputElement.Add(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">XElement</span>(<span style="color: #a31515">"CrawledProperty"</span>,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">XAttribute</span>(<span style="color: #a31515">"propertySet"</span>,&nbsp;CrawledCategoryUserDefined),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">XAttribute</span>(<span style="color: #a31515">"propertyName"</span>,&nbsp;<span style="color: #a31515">"mycontentcheck"</span>),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">new</span>&nbsp;<span style="color: #2b91af">XAttribute</span>(<span style="color: #a31515">"varType"</span>,&nbsp;31),&nbsp;mappedTo)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outputElement.Save(outputFile);<br />&nbsp; &nbsp; &nbsp; &nbsp; } <br /></pre>
<br /></pre>
<p>Attached is the complete code. </p>
<p>The corresponding contents of pipelineextensibility.xml is as follows:</p>
<p>&nbsp;</p>
<pre style="font-family: consolas;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">PipelineExtensibility</span><span style="color: blue;">&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&lt;</span><span style="color: #a31515;">Run</span><span style="color: blue;">&nbsp;</span><span style="color: red;">command</span><span style="color: blue;">=</span>"<span style="color: blue;">HasContentTypeCheck.exe&nbsp;%(input)s&nbsp;%(output)s</span>"<span style="color: blue;">&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #a31515;">Input</span><span style="color: blue;">&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #a31515;">CrawledProperty</span><span style="color: blue;">&nbsp;</span><span style="color: red;">propertySet</span><span style="color: blue;">=</span>"<span style="color: blue;">00130329-0000-0130-c000-000000131346</span>"<span style="color: blue;">&nbsp;</span><span style="color: red;">varType</span><span style="color: blue;">=</span>"<span style="color: blue;">31</span>"<span style="color: blue;">&nbsp;</span><span style="color: red;">propertyName</span><span style="color: blue;">=</span>"<span style="color: blue;">ows_ContentType</span>"<span style="color: blue;">/&gt;</span><br /><pre style="font-family: consolas;"><br /><span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--</span><span style="color: green;">&nbsp;Included&nbsp;for&nbsp;debugging/traceability&nbsp;purposes&nbsp;</span><span style="color: blue;">--&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #a31515;">CrawledProperty</span><span style="color: blue;">&nbsp;</span><span style="color: red;">propertySet</span><span style="color: blue;">=</span>"<span style="color: blue;">11280615-f653-448f-8ed8-2915008789f2</span>"<span style="color: blue;">&nbsp;</span><span style="color: red;">varType</span><span style="color: blue;">=</span>"<span style="color: blue;">31</span>"<span style="color: blue;">&nbsp;</span><span style="color: red;">propertyName</span><span style="color: blue;">=</span>"<span style="color: blue;">url</span>"<span style="color: blue;">/&gt;</span><br /></pre>
<span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #a31515;">Input</span><span style="color: blue;">&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #a31515;">Output</span><span style="color: blue;">&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="color: #a31515;">CrawledProperty</span><span style="color: blue;">&nbsp;</span><span style="color: red;">propertySet</span><span style="color: blue;">=</span>"<span style="color: blue;">d5cdd505-2e9c-101b-9397-08002b2cf9ae</span>"<span style="color: blue;">&nbsp;</span><span style="color: red;">varType</span><span style="color: blue;">=</span>"<span style="color: blue;">31</span>"<span style="color: blue;">&nbsp;</span><span style="color: red;">propertyName</span><span style="color: blue;">=</span>"<span style="color: blue;">mycontentcheck</span>"<span style="color: blue;">/&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span style="color: #a31515;">Output</span><span style="color: blue;">&gt;</span><br /><span style="color: blue;">&nbsp;&nbsp;&lt;/</span><span style="color: #a31515;">Run</span><span style="color: blue;">&gt;</span><br /><span style="color: blue;">&lt;/</span><span style="color: #a31515;">PipelineExtensibility</span><span style="color: blue;">&gt;</span><br /> &nbsp;</pre>
<p>&nbsp;</p>
<p>Credits go to my colleague Barry Waldbaum for coming up with the inital solution!</p>
<p><!--[if gte mso 9]><xml>
 <w:worddocument>
  <w:view>Normal</w:view>
  <w:zoom>0</w:zoom>
  <w:trackmoves />
  <w:trackformatting />
  <w:punctuationkerning />
  <w:validateagainstschemas />
  <w:saveifxmlinvalid>false</w:saveifxmlinvalid>
  <w:ignoremixedcontent>false</w:ignoremixedcontent>
  <w:alwaysshowplaceholdertext>false</w:alwaysshowplaceholdertext>
  <w:donotpromoteqf />
  <w:lidthemeother>EN-US</w:lidthemeother>
  <w:lidthemeasian>X-NONE</w:lidthemeasian>
  <w:lidthemecomplexscript>X-NONE</w:lidthemecomplexscript>
  <w:compatibility>
   <w:breakwrappedtables />
   <w:snaptogridincell />
   <w:wraptextwithpunct />
   <w:useasianbreakrules />
   <w:dontgrowautofit />
   <w:splitpgbreakandparamark />
   <w:enableopentypekerning />
   <w:dontflipmirrorindents />
   <w:overridetablestylehps />
  </w:compatibility>
  <w:browserlevel>MicrosoftInternetExplorer4</w:browserlevel>
  <m:mathpr>
   <m:mathfont m:val="Cambria Math" />
   <m:brkbin m:val="before" />
   <m:brkbinsub m:val="&#45;-" />
   <m:smallfrac m:val="off" />
   <m:dispdef />
   <m:lmargin m:val="0" />
   <m:rmargin m:val="0" />
   <m:defjc m:val="centerGroup" />
   <m:wrapindent m:val="1440" />
   <m:intlim m:val="subSup" />
   <m:narylim m:val="undOvr" />
  </m:mathpr></w:worddocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:latentstyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:lsdexception Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal" />
  <w:lsdexception Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 2" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 3" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 4" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 5" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 6" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 7" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 8" />
  <w:lsdexception Locked="false" Priority="9" QFormat="true" Name="heading 9" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 1" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 2" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 3" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 4" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 5" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 6" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 7" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 8" />
  <w:lsdexception Locked="false" Priority="39" Name="toc 9" />
  <w:lsdexception Locked="false" Priority="35" QFormat="true" Name="caption" />
  <w:lsdexception Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title" />
  <w:lsdexception Locked="false" Priority="1" Name="Default Paragraph Font" />
  <w:lsdexception Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle" />
  <w:lsdexception Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong" />
  <w:lsdexception Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis" />
  <w:lsdexception Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid" />
  <w:lsdexception Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" />
  <w:lsdexception Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing" />
  <w:lsdexception Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading" />
  <w:lsdexception Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List" />
  <w:lsdexception Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid" />
  <w:lsdexception Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1" />
  <w:lsdexception Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2" />
  <w:lsdexception Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1" />
  <w:lsdexception Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2" />
  <w:lsdexception Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1" />
  <w:lsdexception Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2" />
  <w:lsdexception Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3" />
  <w:lsdexception Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List" />
  <w:lsdexception Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading" />
  <w:lsdexception Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List" />
  <w:lsdexception Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid" />
  <w:lsdexception Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1" />
  <w:lsdexception Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1" />
  <w:lsdexception Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1" />
  <w:lsdexception Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" />
  <w:lsdexception Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" />
  <w:lsdexception Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1" />
  <w:lsdexception Locked="false" UnhideWhenUsed="false" Name="Revision" />
  <w:lsdexception Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" />
  <w:lsdexception Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote" />
  <w:lsdexception Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" />
  <w:lsdexception Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1" />
  <w:lsdexception Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" />
  <w:lsdexception Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" />
  <w:lsdexception Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" />
  <w:lsdexception Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1" />
  <w:lsdexception Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1" />
  <w:lsdexception Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1" />
  <w:lsdexception Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1" />
  <w:lsdexception Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2" />
  <w:lsdexception Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2" />
  <w:lsdexception Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2" />
  <w:lsdexception Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" />
  <w:lsdexception Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" />
  <w:lsdexception Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2" />
  <w:lsdexception Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2" />
  <w:lsdexception Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" />
  <w:lsdexception Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" />
  <w:lsdexception Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" />
  <w:lsdexception Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2" />
  <w:lsdexception Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2" />
  <w:lsdexception Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2" />
  <w:lsdexception Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2" />
  <w:lsdexception Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3" />
  <w:lsdexception Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3" />
  <w:lsdexception Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3" />
  <w:lsdexception Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" />
  <w:lsdexception Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" />
  <w:lsdexception Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3" />
  <w:lsdexception Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3" />
  <w:lsdexception Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" />
  <w:lsdexception Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" />
  <w:lsdexception Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" />
  <w:lsdexception Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3" />
  <w:lsdexception Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3" />
  <w:lsdexception Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3" />
  <w:lsdexception Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3" />
  <w:lsdexception Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4" />
  <w:lsdexception Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4" />
  <w:lsdexception Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4" />
  <w:lsdexception Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" />
  <w:lsdexception Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" />
  <w:lsdexception Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4" />
  <w:lsdexception Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4" />
  <w:lsdexception Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" />
  <w:lsdexception Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" />
  <w:lsdexception Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" />
  <w:lsdexception Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4" />
  <w:lsdexception Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4" />
  <w:lsdexception Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4" />
  <w:lsdexception Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4" />
  <w:lsdexception Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5" />
  <w:lsdexception Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5" />
  <w:lsdexception Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5" />
  <w:lsdexception Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" />
  <w:lsdexception Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" />
  <w:lsdexception Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5" />
  <w:lsdexception Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5" />
  <w:lsdexception Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" />
  <w:lsdexception Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" />
  <w:lsdexception Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" />
  <w:lsdexception Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5" />
  <w:lsdexception Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5" />
  <w:lsdexception Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5" />
  <w:lsdexception Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5" />
  <w:lsdexception Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6" />
  <w:lsdexception Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6" />
  <w:lsdexception Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6" />
  <w:lsdexception Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" />
  <w:lsdexception Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" />
  <w:lsdexception Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6" />
  <w:lsdexception Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6" />
  <w:lsdexception Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" />
  <w:lsdexception Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" />
  <w:lsdexception Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" />
  <w:lsdexception Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6" />
  <w:lsdexception Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6" />
  <w:lsdexception Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6" />
  <w:lsdexception Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6" />
  <w:lsdexception Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" />
  <w:lsdexception Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" />
  <w:lsdexception Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" />
  <w:lsdexception Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" />
  <w:lsdexception Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title" />
  <w:lsdexception Locked="false" Priority="37" Name="Bibliography" />
  <w:lsdexception Locked="false" Priority="39" QFormat="true" Name="TOC Heading" />
 </w:latentstyles>
</xml><![endif]--><!--[if gte mso 10]>
<mce:style><! 
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
-->
<!--[endif]--><span style="font-size: small;"><span style="font-family: 'Calibri','sans-serif'; color: #1f497d;">Disclaimer:<br />This
code is dedicated to the public domain as-is without warranty of any kind.</span></span></!--[endif]--></!></mce:style></!--[if></![endif]--></!--[if></![endif]--></!--[if></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/06/66/55/HasContentTypeCheck.cs" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-06-66-55/HasContentTypeCheck.cs">HasContentTypeCheck.cs</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>