<?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>On Search</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/onsearch/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/onsearch/feed.xml</link>
    <description>Microsoft search experts on all things search</description>
    <lastBuildDate>Tue, 16 Apr 2019 06:13:00 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>SharePoint auto created managed properties and document processing performance</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/sharepoint-auto-created-managed-properties-and-document-processing-performance</link>
      <pubDate>Mon, 10 Apr 2017 14:12:22 GMT</pubDate>
      <dc:creator><![CDATA[JonWaite_Search]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/?p=3365</guid>
      <description><![CDATA[Out of the box, SharePoint 2013 will automatically create a Managed Property when it discovers a...]]></description>
      <content:encoded><![CDATA[Out of the box, SharePoint 2013 will automatically create a Managed Property when it discovers a Site Column in a SharePoint site. This TechNet article describes this feature: <a href="https://technet.microsoft.com/en-us/library/jj613136.aspx">https://technet.microsoft.com/en-us/library/jj613136.aspx</a>. This feature makes it easy for users who use a site column on multiple lists on their site to also search for that content based on the site column value.

In large search environments, this feature can create a large number of managed properties which will cause performance issues. The supported number of managed properties for a Search Service Application is 50,000. (see <a href="https://technet.microsoft.com/en-us/library/cc262787.aspx">https://technet.microsoft.com/en-us/library/cc262787.aspx</a> ). As the number of managed properties grows, the amount of time spent mapping crawled properties to managed properties during content processing also grows. This can have major impact on the rate at which new items can be added to the index.

<strong>What should I do to avoid this problem?</strong>

The performance impact of auto created managed properties has been mitigated in SharePoint 2016, so we recommend upgrading to SharePoint 2016 to avoid this performance issue.

If you cannot immediately upgrade to SharePoint 2016, you can disable the creation of managed properties in SharePoint 2013 to avoid the performance impact caused by a large number of managed properties. If you are already seeing a performance impact, then you would also need to delete some of your managed properties to reduce the performance impact during content processing. You'll find information on how to do that below.

<strong>Do I even <em>have</em> this problem? </strong> The Content Processing Activity chart in the Crawl Health Reports in the Search Service Administration page can help identify how long the property mapping is taking. Here is an example of that chart showing extreme delays in content processing due to number of auto created managed properties which have been created

[caption id="attachment_3375" align="alignnone" width="640"]<a href="https://msdnshared.blob.core.windows.net/media/2017/03/blogpostchart.png"><img width="640" height="482" class="wp-image-3375 size-full" alt="Content Processing Activity chart" src="https://msdnshared.blob.core.windows.net/media/2017/03/blogpostchart.png" /></a> Content Processing Activity report on a SharePoint 2013 farm with 90,000 managed properties.[/caption]

To determine how many managed properties you have, browse to your Search Service Administration page in the Central Administration website and click Search Schema link. The total count is listed at the top of the list of Managed Properties.

You could also use the following PowerShell commands.
<blockquote>$mps = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication "&lt;SearchServiceApplicationName&gt;"

$mps.count</blockquote>
<strong>I have too many properties, or I'm on the path to too many properties. How do I disable auto creation? </strong>

To disable the auto creation of managed properties for site columns, we will modify the settings on the “SharePoint” metadata category. The SharePoint metadata category is a collection of many property sets. Each property set can have its own settings, however the settings shown in Central Administration Website or PowerShell do not reflect the settings for each of these included property sets. The default is that the property set for site columns has this enabled, but the setting shown to the user reflects a different property set where the settings are disabled. The steps to disable this feature require that we enable auto creation at the category level, which will set all included property sets to enabled, then disable it on the category, disabling it on all property sets. This design means that once we have changed these settings we can NOT revert to the original behavior with individual property sets having unique settings. These changes can be made in Central Administration or via PowerShell.

Central Admin:
<ol>
 	<li>From the Search Service Administration page, click Search Schema.</li>
 	<li>On the Search Schema Page, Click Categories in the “breadcrumb” navigation at the top of the page.</li>
 	<li>Locate the SharePoint category and use the dropdown menu to select Edit category. Only 50 categories are listed per page so you may need to navigate to additional pages to location the SharePoint category.</li>
 	<li>Select the Searchable, Queryable, Retrievable checkboxes and click OK.</li>
 	<li>Locate the SharePoint category and use the dropdown menu to select Edit category.</li>
 	<li>Deselect the Searchable, Queryable, Retrievable checkboxes and click OK.</li>
</ol>
SharePoint PowerShell:
<blockquote>$mcat = Get-SPEnterpriseSearchMetadataCategory -SearchApplication "&lt;SearchServiceApplicationName&gt;" -Identity SharePoint

$mcat.AutoCreateNewManagedProperties = $true

$mcat.update()

$mcat.AutoCreateNewManagedProperties = $false

$mcat.update()</blockquote>
<strong>I've turned off auto creation, but how do I clean up this mess? </strong>

If you find that the number of Managed Properties is too high and impacting your performance, you can remove some Managed Properties. You can remove them from either the Central Administration Website or PowerShell.

In Central Administration, locate the Managed Property in the Search Schema page and use the drop-down menu to delete the property.

In PowerShell, you cannot remove a Managed Property which still has mappings to a Crawled Property, so you must first remove those mappings. Here is an example of the steps a script would need to take.
<ol>
 	<li>User <strong>Get-SPEnterpriseSearchMetadataManagedProperty</strong> to get the managed property you wish to remove.</li>
 	<li>Retrieve the mappings for the Managed Property you wish to delete using <strong>Get-SPEnterpriseSearchMetadataMapping</strong>.</li>
 	<li>Iterate through the mappings, removing each one using <strong>Remove-SPEnterpriseSearchMetadataMapping</strong></li>
 	<li>Once all mappings have been removed, remove the Managed Property with <strong>Remove-SPEnterpriseSearchMetadataManagedProperty</strong></li>
</ol>
<strong>What else do I need to know?</strong>

One of the common questions I have heard is "How do I know which of my auto created Managed Properties are actually being used so I can only delete unused properties?" Unfortunately, I have not been able to discover a way to audit Managed Property use in queries. This means that there is some risk that you disrupt end user queries when you delete auto created Managed Properties. I would recommend that if you need to do so, you educate your helpdesk on how to recognize these queries and be ready to educate users on how to create site collection Managed Properties as well as a process in place where they can request Search Service Application level Managed Properties to be created for use cases that span multiple site collections.]]></content:encoded>
    </item>
    <item>
      <title>Search Performance: A case of AV slowing down crawls</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/search-performance-a-case-of-av-slowing-down-crawls</link>
      <pubDate>Wed, 27 Apr 2016 03:00:27 GMT</pubDate>
      <dc:creator><![CDATA[bspender]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2016/04/27/search-performance-a-case-of-av-slowing-down-crawls/</guid>
      <description><![CDATA[In the services world supporting Search, I commonly see the nasty impact of Anti-Virus (AV) on the...]]></description>
      <content:encoded><![CDATA[<p>In the services world supporting Search, I commonly see the nasty impact of Anti-Virus (AV) on the performance of SharePoint Search. Before diving into this scenario, I want to first reiterate the following KB:</p>
<p><strong>Certain folders may have to be excluded from antivirus scanning when you use file-level antivirus software in SharePoint</strong><br />
<a title="https://support.microsoft.com/en-us/kb/952167" href="https://support.microsoft.com/en-us/kb/952167">https://support.microsoft.com/en-us/kb/952167</a></p>
<p style="padding-left:30px;">Which states:<br />
<em>These folders may have to be excluded from antivirus scanning when you use file-level antivirus software in SharePoint. <span style="color:#ff0000;">If these folders are not excluded, you may see unexpected behavior</span>. For example, you may receive &#8220;access denied&#8221; error messages when files are uploaded.</em></p>
<p>Admittedly, that statement seems a bit ambiguous, but I  whole-heartedly recommend the exceptions and hope to convince you of their need with the all-too-common scenario described below.</p>
<h2>The [representative] scenario&#8230;</h2>
<p>The consequence of Anti-Virus locking out files can manifest in many different ways. In some cases, the signs are obvious (e.g. the IO Exception &#8220;<span style="color:#ff0000;">The process cannot access the file because it is being used by another process</span>&#8220;), whereas others throw no particular exception, but instead exhibit terrible performance (e.g. very low documents per second processed). Further, I&#8217;ve also seen several cases where AV ultimately led to Index replicas regularly cycling through degraded states.</p>
<p>The point&#8230; there is no single path to failure caused by AV, but I&#8217;ll try to walk you through some representative scenarios. Conversely, other factors can cause similar performance impacts, too (e.g. saturated network, poor disk, etc)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/2016/04/AVImpact.png"><img class="alignnone  wp-image-545" src="https://msdnshared.blob.core.windows.net/media/2016/04/AVImpact-1024x551.png" alt="AVImpact" width="799" height="430" /></a></p>
<p>&#8230;but for now, we&#8217;ll focus on AV (and for anyone asking&#8230; that is a great example of AV totally wrecking the performance in my lab).</p>
<h2>Follow the <span style="color:#999999;"><del>money</del> </span>crawl flow&#8230;</h2>
<p>As we dive in, I will refer to <a href="https://blogs.msdn.microsoft.com/sharepoint_strategery/2015/01/26/sp2013-crawling-explained-orchestration-part-1/">the following high level flow for a crawl</a> when describing a particular point of a crawl:</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/49/41/metablogapi/8551.012615_1602_SP2013Crawl1.png" alt=" " width="760" height="407" /></p>
<p>The <em>Crawl Load</em> report (found in Central Admin -&gt; Crawl Health Reports -&gt; in the Crawl Latency tab) illustrates the number of items being processed by the system at any a given moment in time, whereas the <em>Crawl Latency</em> chart (in the same tab, but presented under the <em>Crawl Load</em> chart) shows you the latency for various stages. <a href="https://channel9.msdn.com/Events/Ignite/2015/BRK3176">At Ignite (around the 47m 30s mark)</a>, I talked about the <em>Crawl Load</em> report and noted that I use it as my starting point when troubleshooting any crawl performance issue.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/2016/04/crawlLoad-v-latency.png"><img class="alignnone  wp-image-555" src="https://msdnshared.blob.core.windows.net/media/2016/04/crawlLoad-v-latency-1024x448.png" alt="crawlLoad-v-latency" width="800" height="350" /></a></p>
<p>For the <em>Crawl Load</em>, I use the analogy of cars on the road. If you take an aerial photo of rush hour traffic, you would see a lot of cars on the road, but have no real measure of how fast each car is actually moving. Being said, if in that photo you could see that lots of cars where packing in between mile marker 10 and 11, then there was likely something between mile marker 11 and 12 causing a slow-down (e.g. all the cars on the road are backed up by some bottleneck further down the road).</p>
<p>This <em>Crawl Load</em> chart is similar in that we can see where the items are in the system as they are being processed. Although overly simplified, it may also help to think about this <em>Crawl Load</em> chart as an indicator of where the Crawl Component’s [gatherer, aka “robot”] threads are currently working (e.g. each thread is working on some batch of items at any given time, which is why the chart shows number of items in the Y axis instead of threads). To take out the previous analogy further, each car [thread] is moving a batch of people [items] down the road [crawl flow].</p>
<p>When a crawl is flowing well, you&#8217;d typically expect to see a roughly even split of items in the &#8220;In Crawler Queue&#8221; and &#8220;Submitted to CTS&#8221;. In other words, about half of the threads are busy gathering new items to process and the other half of threads are waiting for callbacks on items being processed.</p>
<p>However&#8230;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/2016/04/backedupInPlugin.jpg"><img class="alignnone size-full wp-image-556" src="https://msdnshared.blob.core.windows.net/media/2016/04/backedupInPlugin.jpg" alt="backedupInPlugin" width="621" height="376" /></a></p>
<p>&#8230;here we see the threads are mostly pooling in &#8220;Waiting in Content Plugin&#8221; (e.g. between <strong>steps 2b</strong> and <strong>3</strong> from the flow illustration above) and in “Submitted to CTS” (which means the threads are waiting on a callback until the processing in <strong>steps 3</strong> to <strong>6b</strong> completed). Going back to the traffic analogy again, we would expect to see corresponding bottlenecks somewhere <em>down the road</em>, which we can see using the &#8220;Content Processing Activity&#8221; report.</p>
<p>The very first chart at the top of this post (e.g. the &#8220;Content Processing Activity&#8221; report dominated by <span style="color:#800080;">purple</span> [<em>DocumentRetrieval</em>] and <span style="color:#ffcc00;">gold</span> [<em>Indexing</em>] values) best illustrates the negative impact that AV can have on crawling&#8230;</p>
<h3>Scenario 1: DocumentRetrieval</h3>
<p>In <a title="SP2013: Understanding storage locations for files gathered by the Crawl Component" href="https://blogs.msdn.microsoft.com/sharepoint_strategery/2014/12/04/sp2013-understanding-storage-locations-for-files-gathered-by-the-crawl-component/">my post here</a> describing the various paths used during a crawl, we can see that the Content Processing Component reaches back to the Crawl Component (via the <strong>GathererDataShare</strong>) during the <em>DocumentParsing</em> stage in the processing flow (during <strong>step 4</strong> above) to retrieve an item&#8217;s blob. For example:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/49/41/1373.gathererDataShare.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/49/41/1373.gathererDataShare.png" alt=" " width="698" height="288" border="0" /></a></p>
<p>When AV interferes with this retrieval over the <strong>GathererDataShare</strong> file share&#8230; well, you see lots of <span style="color:#800080;">purple</span> [<em>DocumentRetrieval</em>] in the &#8220;Content Processing Activity&#8221; report.</p>
<h3>Scenario 2: Indexing</h3>
<p>For this particular customer, the DocumentRetrieval stage was playing nice. Instead, we found GIGANTIC delays in &#8220;Indexing&#8221; (<strong>steps 5</strong> and <strong>6a</strong> in the flow above)</p>
<p style="padding-left:30px;"><em>   <span style="color:#003366;">*(apologies for the grainy images, but that is ~170 seconds for each item)</span><br />
</em><a href="https://msdnshared.blob.core.windows.net/media/2016/04/indexingSpikes.jpg"><img class="alignnone size-full wp-image-565" src="https://msdnshared.blob.core.windows.net/media/2016/04/indexingSpikes.jpg" alt="indexingSpikes" width="623" height="412" /></a></p>
<p>After disabling AV, the very same system processed most items in ~200-300 milliseconds as seen below:</p>
<p style="padding-left:30px;"><a href="https://msdnshared.blob.core.windows.net/media/2016/04/normalCPCactivity.jpg"><img class="alignnone  wp-image-575" src="https://msdnshared.blob.core.windows.net/media/2016/04/normalCPCactivity.jpg" alt="normalCPCactivity" width="622" height="486" /></a></p>
<h2>Into the weeds&#8230;</h2>
<p>As I described further <a href="https://blogs.msdn.microsoft.com/sharepoint_strategery/2015/07/08/sp2013-using-get-spindexreports-to-troubleshoot-failed-master-merge/"><em>in this post</em></a> (in the section labeled <em>Glimpse into the Mechanics for Managing the Index</em> about 25% into that post), the Index regularly creates, merges, and deletes many small files as part of the normal processing.</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/49/41/metablogapi/5428.070815_0025_SP2013Troub3.png" alt=" " width="730" height="296" /></p>
<p style="padding-left:30px;"><em>&#8220;Index files are never directly modified. Instead, when the Index parts on one level become &gt;10% of the level above, they are &#8220;<strong>merged</strong>&#8221; into a new part file at that next level above. After the merging has completed, the parts on the lower levels (now merged into the higher level) can then be deleted from disk. During normal operation, the master part typically accounts for &gt;90% of the active documents in the given partition (100% when everything is fully merged into the master part) and the levels below for the other ~10%.&#8221;</em></p>
<p>When AV gets involved, these low level Index files get locked &#8211; at times temporarily and sometimes indefinitely (until the noderunner.exe gets recycled) leading to longer than expected processing times (read: poor performance) and/or degraded components.</p>
<p>For example, exceptions such as the following commonly (but not always) occurs when AV locks out a file needed by Search:</p>
<p style="padding-left:30px;"><span style="color:#003366;">NodeRunnerIndex10-bc8226eb-4f3e      Search      Search Component      ajkma      <strong>Unexpected</strong><br />
<strong>JournalReceiverWorker[SPae590e863ac2]: Generation redo failed with exception.:<br />
</strong> <strong><span style="color:#ff0000;">System.IO.IOException: The process cannot access the file because it is being used by another process.</span><br />
</strong>  <span style="color:#003366;">      </span>at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)<br />
<span style="color:#003366;">  <span style="color:#003366;">      </span></span>at System.IO.File.InternalMove(String sourceFileName, String destFileName, Boolean checkHost)<br />
<span style="color:#003366;">        </span>at Microsoft.Ceres.CoreServices.Storage.LocalDisk.LocalDiskStorage.MoveFile(StoragePath oldPath, StoragePath newPath)<br />
<em>  <span style="color:#003366;">  <span style="color:#003366;">  </span><span style="color:#003366;">  </span></span><span style="color:#999999;">…etc…</span></em></span></p>
<p>In this particular scenario, one of the Journal files were locked out preventing the secondary replica from fully synchronizing with the primary replica. Eventually, this caused the secondary replica to get &#8220;left behind&#8221; by the primary replica where the problem manifested itself as a degraded Index component.</p>
<p>Keep in mind a few points here:</p>
<ul>
<li>The index has lots of different types of files that can be impacted (e.g. Journal files, mfs files, parts, merges, generation state files, and so on) and the exception can happen with any of them. Being said, when hunting in ULS, search for the exception (i.e. &#8220;it is being used by another process&#8221;) rather than this specific event ID.</li>
<li>This exception does not always occur (so &#8220;no message&#8221; does not mean &#8220;no interference from AV&#8221;). But if it does appear in your ULS, AV is most certainly at play (and <a href="https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx">Process Monitor </a>can help verify).</li>
<li>With the redundancy built into Search, a single degraded component does not result in any sort of query outage meaning the failure may &#8220;silently&#8221; occur. In this specific scenario, the customer noticed the degraded components several hours after this event occurring in ULS.</li>
<li>When this specific scenario occurred, the thread in this Index component was blocked from moving forward and thus stuck on a particular Generation. On a recycle of the noderunner.exe process (by restarting the HostController service), this secondary replica could then be re-seeded and caught up.</li>
</ul>
<p>As noted above, the &#8220;<em>used by another process</em>&#8221; exception does not always occur. In other times, we may also see excessively long operations that simply time out. For example:</p>
<p style="padding-left:30px;"><span style="color:#003366;">NodeRunnerIndex10-bc8226eb-4f3e      Search      General      ainw9      Medium</span><br />
<span style="color:#003366;">Remote service invocation: method=GetRecoveryAction(lastPreparedGeneration) Service = {  </span><br />
<span style="color:#003366;">      <strong>Implementation type=Microsoft.Ceres.SearchCore.JournalShipper.JournalShipper </strong><br />
</span><span style="color:#003366;">Component: SPd9a8b223b429I.2.0.JournalShipper<br />
</span><span style="color:#003366;">Exposer Name: JournalStreamControl<br />
} <strong>terminated with exception: </strong></span><br />
<span style="color:#003366;"><span style="color:#003366;">  </span><span style="color:#003366;">  </span><span style="color:#003366;">  </span><span style="color:#ff0000;"><strong>System.Threading.ThreadInterruptedException: Thread was interrupted from a waiting state.</strong></span></span><br />
<span style="color:#003366;"><span style="color:#003366;">  </span><span style="color:#003366;">  </span><span style="color:#003366;">  </span><span style="color:#003366;">  </span><span style="color:#003366;">  </span><span style="color:#003366;">  </span>at System.Threading.Monitor.Enter(Object obj)</span><br />
<span style="color:#003366;">            at Microsoft.Ceres.SearchCore.Journal.Journal.get_LastPreparedGeneration()</span><br />
<span style="color:#003366;">            at Microsoft.Ceres.SearchCore.JournalShipper.JournalShipper.GetRecoveryAction(UniqueGeneration generationId)</span></p>
<p style="padding-left:30px;">Followed by:<span style="color:#003366;"><br />
NodeRunnerIndex10-bc8226eb-4f3e      Search      Search Platform Services      ajhl2      Monitorable</span><br />
<span style="color:#003366;">Microsoft.Ceres.CoreServices.Remoting.InvokerService : </span><span style="color:#003366;"><strong><span style="color:#ff0000;">Service invocation timed out after 179999 ms</span></strong>, </span><br />
<span style="color:#003366;">method=GetRecoveryAction(lastPreparedGeneration) Service = {  </span><br />
<span style="color:#003366;">            <strong>Implementation type=Microsoft.Ceres.SearchCore.JournalShipper.JournalShipper  </strong></span><br />
<span style="color:#003366;">            Component: SPd9a8b223b429I.2.0.JournalShipper  </span><br />
<span style="color:#003366;">            Exposer Name: JournalStreamControl</span><br />
<span style="color:#003366;">}</span></p>
<p>If you&#8217;re actually still reading at this point, the 179 seconds reported in the timeout should trigger memories of a &#8220;Content Processing Activity&#8221; chart above where the average time was ~170 seconds (aka: the wall of yellow).</p>
<h2>The takeaway&#8230;</h2>
<p>If you see anything like this:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/2016/04/AVImpactToo.png"><img class="alignnone  wp-image-585" src="https://msdnshared.blob.core.windows.net/media/2016/04/AVImpactToo-1024x731.png" alt="AVImpactToo" width="657" height="469" /></a></p>
<p>Be thinking&#8230;</p>
<ul>
<li>Verify AV exclusions  <span style="color:#008000;"><em>/* this is by far the most typical root cause that I&#8217;ve seen */</em></span></li>
<li>Check for <a title="SP2013: Using Get-SPIndexReports to Troubleshoot Failed Master Merge" href="https://blogs.msdn.microsoft.com/sharepoint_strategery/2015/07/08/sp2013-using-get-spindexreports-to-troubleshoot-failed-master-merge/">failing Master Merge</a></li>
<li>Disable TCP Chimney Offload and IP Task Offload <span style="color:#008000;"> <em>/* rare, but it can make an impact */</em></span></li>
<li>And then dive into the other typical resources constraints (e.g. Disk, Network, CPU)</li>
</ul>
<p>I hope this helps&#8230;</p>
]]></content:encoded>
    </item>
    <item>
      <title>SharePoint Search Runbook - Move Admin Components</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/sharepoint-search-runbook-move-admin-components</link>
      <pubDate>Wed, 30 Mar 2016 14:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Brent Groom]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2016/03/30/sharepoint-search-runbook-move-admin-components/</guid>
      <description><![CDATA[This post may be used as a reference to help create&nbsp;or update a SharePoint search...]]></description>
      <content:encoded><![CDATA[<p>This post may be used as a reference to help create&nbsp;or update a SharePoint search runbook.</p>
<h1>Move Admin Components</h1>
<p>In some environments it is necessary to separate admin components and&nbsp;crawl components. The PowerShell commands below may be used to move the admin components to a new server. This process assumes that search components are already running on the new admin servers and also assumes some search components will remain on the old admin servers. These steps describe the general process:</p>
<ol>
<li>Verify all search components are healthy</li>
<li>Add new admin components</li>
<li>Verify all search components are running</li>
<li>Remove old admin components (NOTE: Search will be offline for a period of time during this step)</li>
</ol>
<h2>Use the following PowerShell to add the new admin components. Make sure you edit the server names.</h2>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;"># Add new admin components</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$AddAdminServer1 = &quot;Server2&quot;</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$AddAdminServer2 = &quot;Server1&quot;</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$ssa = Get-SPEnterpriseSearchServiceApplication</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$NewAdminServer1 = Get-SPEnterpriseSearchServiceInstance -Identity $AddAdminServer1</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$NewAdminServer2 = Get-SPEnterpriseSearchServiceInstance -Identity $AddAdminServer2</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;"># start a new admin component on the new server</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">New-SPEnterpriseSearchAdminComponent -SearchTopology $clone -SearchServiceInstance $NewAdminServer1</span><br /><span style="font-family:courier new,courier;font-size:x-small;">New-SPEnterpriseSearchAdminComponent -SearchTopology $clone -SearchServiceInstance $NewAdminServer2</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">Set-SPEnterpriseSearchTopology -Identity $clone</span></p>
<h4>It will take approximately 10 minutes for the add command to complete. Once it has finished, refresh the Central Admin&nbsp;Search Application Topology and&nbsp;verify that all components are running.</h4>
<h2>Use the following PowerShell to remove the original admin components. Make sure you edit the server names. (NOTE: Search will be offline for a period of time during this process)</h2>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;"><span style="font-family:courier new,courier;font-size:x-small;"># Delete old admin components</span></span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$RemoveAdminServer1 = &quot;OldAdminServer1&quot;</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$RemoveAdminServer2 = &quot;OldAdminServer2&quot;</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$ssa = Get-SPEnterpriseSearchServiceApplication</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">$adminIdentiy1 = (Get-SPEnterpriseSearchComponent -SearchTopology $clone | ? {($_.ServerName -eq $RemoveAdminServer1) -and ($_.Name -Like &quot;Admin*&quot;)}).ComponentId.GUID</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$adminIdentiy2 = (Get-SPEnterpriseSearchComponent -SearchTopology $clone | ? {($_.ServerName -eq $RemoveAdminServer2) -and ($_.Name -Like &quot;Admin*&quot;)}).ComponentId.GUID</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">Remove-SPEnterpriseSearchComponent -Identity $adminIdentiy1 -SearchTopology $clone -Confirm:$False</span><br /><span style="font-family:courier new,courier;font-size:x-small;">Remove-SPEnterpriseSearchComponent -Identity $adminIdentiy2 -SearchTopology $clone -Confirm:$False</span></p>
<p style="margin-left:30px;"><span style="font-family:courier new,courier;font-size:x-small;">Set-SPEnterpriseSearchTopology -Identity $clone</span></p>
<h4>It will take between 15-30&nbsp;minutes for the remove command to complete. Once it has finished, refresh the Central Admin&nbsp;Search Application Topology and&nbsp;verify that all components are running.</h4>
<p>Please leave comments and share your experience. How long did the commands take to finish? How long was the search query experience offline?</p>
<p></p>
<p></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint Search Runbook - CEWS Pipeline Toolkit</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/sharepoint-search-runbook-cews-pipeline-toolkit</link>
      <pubDate>Fri, 25 Mar 2016 12:59:00 GMT</pubDate>
      <dc:creator><![CDATA[Brent Groom]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2016/03/25/sharepoint-search-runbook-cews-pipeline-toolkit/</guid>
      <description><![CDATA[This post may be used as a reference to help create&nbsp;or update a SharePoint search...]]></description>
      <content:encoded><![CDATA[<p>This post may be used as a reference to help create&nbsp;or update a SharePoint search runbook.</p>
<p></p>
<h1>CEWS Pipeline Toolkit</h1>
<p>CEWS Pipeline Toolkit is a content processing framework for search that supports both Content Enrichment Web Service (CEWS) in SharePoint 2013/2016 and the Pipeline Extensibility feature in FAST Search for SharePoint 2010.&nbsp;The tool comes with an installer and graphical user interface. Developers may configure and test pipelines using the built-in modular stages, or develop totally custom processing using Visual Studio and the included sample projects. Pipelines can be executed offline without SharePoint installed, or integrated as part of SharePoint&#39;s processing. The CEWS Pipeline Toolkit has a low overhead, is modular, and extensible. (<a title="CEWS Pipeline Toolkit - TechNet documentation" href="https://social.technet.microsoft.com/wiki/contents/articles/19376.sharepoint-cews-pipeline-toolkit.aspx">TechNet documentation</a>)</p>
<h2><span style="color:#2e74b5;font-family:Calibri Light;font-size:large;">Steps to install </span></h2>
<ol>
<li><span style="font-size:medium;"></span><span style="font-family:Calibri;font-size:medium;">Install CEWS Pipeline Toolkit</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Open a PowerShell Script as admin and cd to the &ldquo;$($Env:CEWS)\scripts&rdquo; directory</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Run the script Install-CEWSWindowsService.ps1</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Verify the windows service is running (<span style="font-family:Calibri;">Sp2013ContentEnrichmentWebService</span>)</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Edit or copy custom configuration files (CEWS.PipelineConfig.xml, Register-CEWS.config) to the CEWS\etc directory</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Copy the custom .dll from the Visual Studio output directory to CEWS\bin</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Run Register-CEWS.ps1 (all crawls must be stopped or paused)</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Verify the managed properties were created as expected</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Restart the windows service (Sp2013ContentEnrichmentWebService)</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Start a crawl and verify the managed properties get populated</span><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></li>
</ol>
<h2><span style="color:#2e74b5;font-family:Calibri Light;font-size:large;">Steps to update the configuration</span><span style="font-size:medium;"><span style="font-family:Calibri;"><br /></span></span></h2>
<h3><span style="font-size:medium;"><span style="font-family:Calibri;">Register-CEWS.config<br /></span></span></h3>
<ol>
<li><span style="font-size:medium;"><span style="font-family:Calibri;">Edit Register-CEWS.config</span></span></li>
<li><span style="font-family:Calibri;font-size:medium;">Run Register-CEWS.ps1 <span style="font-family:Calibri;">(all crawls must be stopped or paused)</span></span></li>
<li><span style="font-family:Calibri;font-size:medium;">Verify the managed properties were created as expected</span></li>
<li><span style="font-family:Calibri;font-size:medium;">Start a crawl and verify the managed properties get populated</span><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></li>
</ol>
<h3><span><span>CEWS.Pipeline.config</span></span></h3>
<ol>
<li><span style="font-size:medium;"><span style="font-family:Calibri;">Edit CEWS.PipelineConfig.xml</span></span></li>
<li><span style="font-family:Calibri;font-size:medium;"><span>Restart the windows service (Sp2013ContentEnrichmentWebService)</span></span></li>
<li><span style="font-family:Calibri;font-size:medium;">Start a crawl and verify the managed properties get populated</span><span style="font-family:Calibri;font-size:medium;">&nbsp;</span><span style="font-family:Calibri;font-size:medium;"><br /></span></li>
</ol>
<h2><span style="color:#2e74b5;font-family:Calibri Light;font-size:large;">Steps to update DLL</span></h2>
<ol>
<li><span style="font-family:Calibri;font-size:medium;">Stop the windows service (Sp2013ContentEnrichmentWebService) </span></li>
<li><span style="font-family:Calibri;font-size:medium;">Copy .dll from Visual Studio output directory to CEWS\bin </span></li>
<li><span style="font-family:Calibri;font-size:medium;">Start the windows service (Sp2013ContentEnrichmentWebService)&nbsp; </span></li>
</ol>
<h2><span style="color:#2e74b5;font-family:Calibri Light;font-size:large;">Steps to Unregister the SharePoint CEWS callout</span></h2>
<p><span style="font-family:Calibri;font-size:medium;">The only reason to run the unregister command would be to stop all custom processing. Note that this command requires all crawls to be stopped.</span></p>
<ol>
<li><span style="font-family:Calibri;font-size:medium;">Run UnRegister-CEWS.bat (all crawls must be <strong>stopped</strong>)</span></li>
</ol>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<h1><span style="font-family:Calibri;font-size:medium;">Helper scripts<br /></span></h1>
<h2><span style="font-family:Calibri;font-size:medium;">Restart CEWS Pipeline Toolkit windows service on all servers<br /></span></h2>
<p><span style="font-family:Calibri;font-size:medium;"></span></p>
<p><br /><span style="font-family:courier new,courier;font-size:x-small;"># restart Windows Services</span><br /><span style="font-family:courier new,courier;font-size:x-small;">#$servers = Get-Content .\serverList.txt</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$servers = @(&quot;server1&quot;,&quot;server2&quot;)</span><br /><span style="font-family:courier new,courier;font-size:x-small;">$services = @(&quot;SharePoint2013ContentEnrichmentWebService&quot;)</span></p>
<p><span style="font-family:courier new,courier;font-size:x-small;"></span></p>
<p><span style="font-family:courier new,courier;font-size:x-small;">foreach($service in $services)</span><br /><span style="font-family:courier new,courier;font-size:x-small;">{ </span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp; foreach($server in $servers)</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp; $sc = sc.exe &quot;\\$server&quot; query $service</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($sc[3].Contains(&quot;RUNNING&quot;))</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Stopping service $service on server $server&quot;</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $t = sc.exe &quot;\\$server&quot; stop $service</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep 1</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Service $service is already stopped on server $server&quot;&nbsp;&nbsp;&nbsp;&nbsp; </span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family:courier new,courier;font-size:x-small;"></span></p>
<p><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp; foreach($s in $servers)</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp; $sc = sc.exe &quot;\\$server&quot; query $service</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($sc[3].Contains(&quot;STOPPED&quot;))</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Starting service $service on server $server&quot;</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $t = sc.exe &quot;\\$server&quot; start $service</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep 1</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Service $service is already started or starting on server $server&quot;</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family:courier new,courier;font-size:x-small;">&nbsp;&nbsp;&nbsp; }</span><br /><span style="font-family:courier new,courier;font-size:x-small;">}</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Search Health Reports (SRx) - Summary for each 'Test'</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/search-health-reports-srx-summary-for-each-test</link>
      <pubDate>Fri, 25 Mar 2016 09:30:00 GMT</pubDate>
      <dc:creator><![CDATA[bspender]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2016/03/25/search-health-reports-srx-summary-for-each-test/</guid>
      <description><![CDATA[Brought to you by SearchEngineers@microsoft.com, the Search Health Reports (SRx Core), which can be...]]></description>
      <content:encoded><![CDATA[<a title="Search Health Reports (SRx)" href="https://gallery.technet.microsoft.com/SRx-Core-SharePoint-Search-d60113e9"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/49/41/metablogapi/8103.020116_0326_AnnouncingS1.png" alt=" " width="72" height="70" align="left" /></a>Brought to you by <a href="mailto:SearchEngineers@microsoft.com">SearchEngineers@microsoft.com</a>, the <strong>Search Health Reports (SRx Core)</strong>, <a href="https://gallery.technet.microsoft.com/SRx-Core-SharePoint-Search-d60113e9">which can be <strong>downloaded here</strong>,</a> is a PowerShell-driven tool for surfacing complex diagnostics for SharePoint Search through new multifaceted reports. The <em>SRx</em> includes a battery of tests that leverage a customized SSA object extended with contextual data from many disparate sources.  For more information on this tool, please see <a href="https://blogs.msdn.microsoft.com/sharepoint_strategery/2016/02/01/announcing-the-search-health-reports-srx-for-sharepoint-search-diagnostics/" target="_blank">our announcement here</a>.   A premium version with additional tests, test automation, Dashboard  integration and Alerting is also available.  Contact <a href="mailto:SearchEngineers@microsoft.com">SearchEngineers@microsoft.com</a> for more information.

Below is a summary of each core test in the tool (and we will continue to update this list).  The Premium Tests are listed after this table.
<div>
<table border="1" cellspacing="0" cellpadding="5" align="left">
<tbody>
<tr style="background-color: #0066ff;color: #fff">
<td style="vertical-align: top"><span style="color: #ffffff"><strong>Core Tests</strong></span></td>
<td style="vertical-align: top"><span style="color: #ffffff"><strong>Description</strong></span></td>
<td style="vertical-align: top"><span style="color: #ffffff"><strong>Comments</strong></span></td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">FarmAdminSyncTimerJob</td>
<td style="vertical-align: top">Tests that the 'Application Server Administration Service Timer Job' (aka: 'job-application-server-admin-service') has recently run on each of the Search servers in the farm</td>
<td style="vertical-align: top">On all servers with the SP Server Search Service Instance started, this administrative Timer Job runs once a minute to initiate:
<ul>
	<li>Service Instance synchronization, which may involve starting the physical process and provisioning any resources</li>
	<li>Synchronizing configuration with the Search Admin DB including:
<ul>
	<li>Propagating schema updates throughout Search system</li>
	<li>Persisting Content Source settings to registry of Crawlers</li>
	<li>Synchronizing the Search Topology including activation or deactivation of components from the host</li>
	<li>Persisting Constellation configuration to the Admin DB</li>
	<li>Trigger checks for initiating a Master Merge of the Index</li>
	<li>Ensures the Legacy Admin is running on the Primary Admin</li>
</ul>
</li>
</ul>
</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">FarmDefaultSSAProxy</td>
<td style="vertical-align: top">Tests that the SSA Proxy for this SSA is defined as the default in all Proxy Groups</td>
<td style="vertical-align: top">Web Applications consume search via the SSA Proxy. By default, the out of the box search web parts can only consume the default SSA in a Proxy Group.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">FarmHasOnlyOneSSA</td>
<td style="vertical-align: top">SSA count</td>
<td style="vertical-align: top">While multiple SSAs are supported, it is recommended to have only one SSA per farm.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">FarmServiceInstances</td>
<td style="vertical-align: top">Tests that the Search related SharePoint Service Instances are 'Online' where applicable</td>
<td style="vertical-align: top">Started on all Search servers:
<ul>
	<li>Search Host Controller Service</li>
	<li>SharePoint Server Search</li>
	<li>SSP Job Control Service</li>
	<li>Microsoft SharePoint Foundation Administration</li>
	<li>Microsoft SharePoint Foundation Timer</li>
</ul>
Started on applicable servers:
<ul>
	<li>Search Administration Web Service  (w/ Admin comps)</li>
	<li>Search Query and Site Settings Service  (w/ QPCs)</li>
</ul>
<p style="padding: 0;margin: 0"></p>
</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">OSPingSearchServer</td>
<td style="vertical-align: top">Test connectivity to all Search servers</td>
<td style="vertical-align: top"></td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">OSPingSQLServer</td>
<td style="vertical-align: top">Test connectivity to all Search SQL servers</td>
<td style="vertical-align: top">Handles SQL Aliases</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">OSPowerPlan</td>
<td style="vertical-align: top">Test Search servers Power Plan setting</td>
<td style="vertical-align: top">Recommended power plan for Search servers is "High Performance" (Balanced is default). The Balanced plan may power down CPU cores and disks.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">OSProcessRunning</td>
<td style="vertical-align: top">Confirm all Search component related processes are running on all Search servers</td>
<td style="vertical-align: top">Verifies that a corresponding process exists for each component (mssearch.exe for crawl components and noderunner.exe for each of the Juno components)</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">OSServiceRunning</td>
<td style="vertical-align: top">Confirm all Search services are running on all  Search servers</td>
<td style="vertical-align: top">On each Search server, checks the status for "SharePoint Server Search", "SharePoint Search Host Controller", "SharePoint Administration", and the "SharePoint Timer Service".</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">OSVolumeProperties</td>
<td style="vertical-align: top">Tests Index Component's Data Volume properties</td>
<td style="vertical-align: top">Recommended Index Component Data Volumes properties are Compression disabled, Block Size set to 65536, and Indexing disabled.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAAdminSynchronized</td>
<td style="vertical-align: top">Confirms the Primary Admin and "legacy" Admin component are properly synchronized to the same server. Also confirms that the System Manager, a thread running in the Primary Admin component, can be reached (Get-SPEnterpriseSearchStutus) and confirms that the legacy Admin component is initialized.</td>
<td style="vertical-align: top">In addition to the Admin component presented in the Search topology, the SSA also has a “legacy” admin component for the SSA used primarily for Crawl and Content Source management, but also impact operations like pausing an SSA. While the legacy component is typically hidden from you, normal administrative operations (e.g. pausing an SSA, starting/stopping a crawl, accessing content source information, etc) will start breaking if it is not properly provisioned/running
<ul>
	<li>The "Application Server Administration Services Timer Job" synchronizes the legacy Admin to run on the same server as the Primary Admin component</li>
</ul>
</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAComponentState</td>
<td style="vertical-align: top">Confirm all Search components in the topology are active</td>
<td style="vertical-align: top"></td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSACrawlNotStuckInStarting</td>
<td style="vertical-align: top">Confirms Crawls are not "stuck" in Starting state</td>
<td style="vertical-align: top">Flags an error if more than 10 minutes passes since the 'Request' time of a that applicable Crawl</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSADatabaseSizingLimits</td>
<td style="vertical-align: top">Confirms all Search databases are within recommended sizing limits</td>
<td style="vertical-align: top">Validates both the average and total number of items in each Crawl and Link Store DBs as well as physical sizing requirements</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAHasContentSources</td>
<td style="vertical-align: top">Confirms SSA has at least one Content Source</td>
<td style="vertical-align: top">If the legacy Admin (e.g. $xSSA.AdminComponent) is not currently provisioned (or is unhealthy), this test may report zero content sources</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAIndexDiskReports</td>
<td style="vertical-align: top">Reports extensive disk information for Search</td>
<td style="vertical-align: top">Reports failures if unable to attain volume info or disk sizing details.Confirms there is enough free disk space for each replica to complete a Master Merge based on an *estimated size for that merge to complete
<ul>
	<li>The amount of space needed to complete a Master Merge is estimated by multiplying the Checkpoint size by 2.5x</li>
</ul>
</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAIndexDocumentCount</td>
<td style="vertical-align: top">Reports total searchable items in the index</td>
<td style="vertical-align: top">Reports index partitions document counts. Confirms a replica holds less than 10/20 million items (warns when approaching this threshold and errors if exceeding)</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAIsOnline</td>
<td style="vertical-align: top">Confirms SSA is online</td>
<td style="vertical-align: top"></td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSANotPaused</td>
<td style="vertical-align: top">Confirms SSA is not paused</td>
<td style="vertical-align: top">Reports pause reason if paused</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSASchemaProperties</td>
<td style="vertical-align: top">Tests that Managed and Crawled Property totals are within recommended thresholds</td>
<td style="vertical-align: top">Recommended maximum number of Managed Properties is 50,000. Recommended maximum number of Crawled Properties is 300,000.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSASearchAdminEndPoints</td>
<td style="vertical-align: top">Confirms Search Admin Service endpoints are active</td>
<td style="vertical-align: top">SearchAdmin.svc is the WCF Endpoint for the “Search Administration Web Service Application for SSA” and used for Crawl/Content Source management. If problems arise here, it's worth verify that the legacy admin component is properly provisioned/running</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSASearchServiceEndPoints</td>
<td style="vertical-align: top">Confirms Search Service endpoints are active</td>
<td style="vertical-align: top">SearchService.svc is the WCF Endpoint for the SSA and used by Web Apps to consume Search</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">TopologyHasMultiAdminComps</td>
<td style="vertical-align: top">Confirms a Primary Admin component is active and multiple Admin components are active</td>
<td style="vertical-align: top"></td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">TopologyNoServerIdMismatch</td>
<td style="vertical-align: top">Confirms each Search component has a valid server ID</td>
<td style="vertical-align: top">Removing/Re-joining a SP Server from the farm will cause the server id to change for SP Server object… but not for the Search component running on that SP Server</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">TopologyNotBeingModified</td>
<td style="vertical-align: top">Confirms that no Topology activations in progress</td>
<td style="vertical-align: top"></td>
</tr>
</tbody>
</table>
</div>
<div></div>
<div>
<table border="1" cellspacing="0" cellpadding="5" align="left">
<tbody>
<tr style="background-color: #0066ff;color: #fff">
<td style="vertical-align: top"><span style="color: #ffffff"><strong>Premium Tests</strong></span></td>
<td style="vertical-align: top"><span style="color: #ffffff"><strong>Description</strong></span></td>
<td style="vertical-align: top"><span style="color: #ffffff"><strong>Comments</strong></span></td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAContentSourceDocCount</td>
<td style="vertical-align: top">Collects Success, Warning, Error, etc... status information per content source for Dashboard report</td>
<td style="vertical-align: top"></td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAContentSourceThresholds</td>
<td style="vertical-align: top">Tests Content Source crawl log data against custom thresholds</td>
<td style="vertical-align: top">Allows the Search Admin to configure thresholds per Content Source by modifying the SRx\etc\ContentSourceExcludeFilter.csv and SRx\etc\ContentSourceThresholds.csv files. For example, among many other conditions, you may trigger an alert if a crawl doesn't meet a certain Success:Error ratio, exceeds a time period, or fails to meet a specified crawl rate.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSACrawlActivity</td>
<td style="vertical-align: top">Collects data for Crawl Activity Dashboard Report</td>
<td style="vertical-align: top">Shows crawl activity for all Content Sources over the last 48 hours. Very useful for identifying possible causes for CPU and disk resource bottlenecks due to overlapping crawls.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSACrawlFreshness</td>
<td style="vertical-align: top">Collects data for Crawl Freshnesh Dashboard Report</td>
<td style="vertical-align: top">Produces a Dashboard report indicating how fresh the content in the Search Farm is.</td>
</tr>
<tr>
<td style="vertical-align: top;font-weight: bold">SSAQueryLatency</td>
<td style="vertical-align: top">Tests Query Totals and latency over last 15 minutes</td>
<td style="vertical-align: top">Allows Search Admin to monitor and receive alerts based on Query Performance.. Test will produce an alert if specified thresholds aren't met.</td>
</tr>
</tbody>
</table>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Need to evaluate SharePoint Search Topology?</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/need-to-evaluate-sharepoint-search-topology</link>
      <pubDate>Fri, 11 Mar 2016 08:32:00 GMT</pubDate>
      <dc:creator><![CDATA[Russ Maxwell]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2016/03/11/need-to-evaluate-sharepoint-search-topology/</guid>
      <description><![CDATA[Intro to Get-SRxTopologyReports  It has some dust and time to blow it off.&#160; My name is Russ...]]></description>
      <content:encoded><![CDATA[<p><strong><span style="font-size:x-small;"><font size="2">Intro to Get-SRxTopologyReports</font></span></strong></p>  <p>It has some dust and time to blow it off.&#160; My name is Russ Maxwell and I’m blogging again and excited to share something I’ve been working on for a few months. As you may or may not know, my colleague Brian Pendergrass developed the core of Search Dashboard. Eric Dixon and Brent Groom were also part of the team and they developed the UI portion. It was a tremendous team effort and I was glad to be a part of it. If you’re not aware of Search Dashboard and its capabilities, please review Brian’s post <a href="https://blogs.msdn.com/b/sharepoint_strategery/archive/2016/02/01/announcing-search-health-reports-srx-for-sharepoint-search-diagnostics.aspx">here</a>.</p>  <p>I wanted to contribute and put my stamp on Search Dashboard. I’m excited to produce the first major enhancement to Search Dashboard with a Topology Report. This was more work than I expected and I really appreciate the contributions made by Brian Pendergrass that helped make this a really rock solid report. Internally working with our customers, We’ve often encountered Search performance issues related with Crawl, Content Processing, Indexing, or Query processing. Many times during the discovery phase of these Search performance issues, we found Search Topologies in a questionable state. At times, we made suggestions to update the Search Topology and this resulted in improved performance while optimizing for future growth.</p>  <p>An optimal Search Topology is one that will provide the best Crawl freshness and Query timings. The Search Topology Report is a module I developed which is an extended feature of Search Dashboard. It’s a PowerShell command-let that outputs a report based on a variety of categories. It’s all PowerShell driven and initially designed for <span style="text-decoration:underline;">SharePoint 2013 On-Premises environments</span>. I’ll discuss the different categories outputted in more details below.</p>  <p>&#160;</p>  <p><strong><span style="font-size:x-small;"><font size="2">Topology Type Detection</font></span></strong></p>  <p>Topology Type Detection determines the size of a Search Topology. This is based on how many index partitions are provisioned for the active search topology.</p>  <ul>   <li>Small Search Topology is detected with 1 Index Partition</li>    <li>Medium Search Topology detected with (2-4) Index Partitions</li>    <li>Large Search Topology detected with 5 or more Index Partitions</li> </ul>  <p>For Example:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/3173.clip_image002_5B5A9FAD.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/3173.clip_5F00_image002_5F00_5B5A9FAD.jpg"><img title="clip_image002" style="margin:0px;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/00/97/52/metablogapi/2376.clip_image002_thumb_604B3441.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/2376.clip_5F00_image002_5F00_thumb_5F00_604B3441.jpg" width="208" height="42" /></a></p>  <p>Depending on what type of Topology is detected determines how the Search Topology is evaluated.</p>  <p>&#160;</p>  <p>&#160;</p>  <p><strong><span style="font-size:x-small;"><font size="2">Redundancy Checks</font></span></strong></p>  <p>This check ensures that all components are redundant. For Index Components, it ensures that at least two index replicas/components exist for a given index partition.</p>  <p>If a component fails a redundancy check, it will look like the following:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/6012.clip_image004_2AC0C901.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/6012.clip_5F00_image004_5F00_2AC0C901.jpg"><img title="clip_image004" style="margin:0px;display:inline;background-image:none;" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/2476.clip_image004_thumb_728DA20F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/2476.clip_5F00_image004_5F00_thumb_5F00_728DA20F.jpg" width="244" height="44" /></a></p>  <p>&#160;</p>  <p>&#160;</p>  <p><strong><span style="font-size:x-small;"><font size="2">Duplicate Component Check</font></span></strong></p>  <p>The duplicate component will report if more than one component of the same type is running on a given server. For Example, two Analytic Processing Components are running on Server A. In this case, Search Topology Report will flag this. In my case, I had no duplicate components running so it came back clean.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/2671.clip_image006_215EAAD9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/2671.clip_5F00_image006_5F00_215EAAD9.jpg"><img title="clip_image006" style="margin:0px;display:inline;background-image:none;" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/1563.clip_image006_thumb_34384FE5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/1563.clip_5F00_image006_5F00_thumb_5F00_34384FE5.jpg" width="244" height="29" /></a></p>  <p>&#160;</p>  <p>&#160;</p> <font size="2"></font>  <p><strong><span style="font-size:x-small;"><font size="2">Search Component Compatibility Check</font></span></strong></p>  <p>We’ve reviewed Search Topologies over the years and know what mix of components run well together and what mix of components may not run as well together. The Search Component Compatibility check evaluate components running on each server and will provide feedback if components are running together that traditionally shouldn’t be.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/0486.clip_image008_16C5FED9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/0486.clip_5F00_image008_5F00_16C5FED9.jpg"><img title="clip_image008" style="margin:0px;display:inline;background-image:none;" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/7840.clip_image008_thumb_4AFA281F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/7840.clip_5F00_image008_5F00_thumb_5F00_4AFA281F.jpg" width="244" height="42" /></a></p>  <p>&#160;</p>  <p>&#160;</p>  <p><strong><span style="font-size:x-small;"><font size="2">Search Topology and Scale Report</font></span></strong></p>  <p>The Search Topology and Scale Report contains a ton of checks to evaluate a Search Topology based on the size of the Search Topology. So again, we determine the Search Topology based on how many Index partitions exists. The outline for the specific checks based on Search Topology are the following:</p>  <p>Small Search Topology</p>  <ul>   <li>Flags if running more than 2 Admin components</li>    <li>Flags if running more than 2 Analytic Processing Components</li>    <li>Flags if running more Crawl Components than Content Processing Components provisioned</li> </ul>  <p>Medium and Large Search Topology</p>  <ul>   <li>Flags if running more than 4 Admin Components</li>    <li>Running more than 4 Analytic Processing Components</li>    <li>Flags if running more Crawl Components than Content Processing Components provisioned </li> </ul>  <p>Question: What about Crawl and Index Component Scale?    <br /> Answer: These checks require more details which I outlined in their own sections below. </p>  <p><strong></strong></p>  <p><strong>Crawl Component and Scale</strong></p>  <p>First, we ensure that the number of Crawl Components doesn’t exceed the supported limit as well as the number of Crawl Databases. If either of these are exceeded, we return back without checking anything further. Assuming a Search Topology is under the supported limits with crawl components we proceed further. With Crawl Component check, more goes into checking how many components are recommended based on a Search Topology size. We must take into account the index performance level as it is the control mechanism that tells the crawler how many gathering threads are available for a given crawl. Some math is required to determine if you’re scaled properly based on the following setup:</p>  <ul>   <li>Index Performance Level</li>    <li># of Unique Hosts (total amount of hosts defined in all Content Sources)</li>    <li>Crawler Impact Rules</li>    <li>Total # of Crawl Components</li> </ul>  <p>Based on a Crawl setup, we established baselines using calculations. If baselines are beneath the baseline or exceed the baseline, the report will suggest the following:</p>  <ol>   <li>Over Sized – Recommend a lower number of crawl components</li>    <li>Under Sized – Recommend a higher number of crawl components</li> </ol>  <p>Before this functionality existed this report, it was very difficult for customers to determine if a crawl setup was scaled properly. Also, many assume that the # of crawl components is based on the size of a Search Topology which is established as the number of index replicas. That is not an accurate statement.</p>  <p>&#160;</p>  <p><strong>Index Component and Scale</strong></p>  <p>Quite a few checks take place within the index and scale portion. We’ve encountered several index performance issues in the past that can index both Crawl freshness and Query timings. Some of these issues were directly correlated to an Index configuration within the active Search Topology. The index component and scale portion will go through a few checks and report if irregularities are discovered. First, Microsoft does leverage a supported boundary when it comes to number of replicas based on a given Index Partition. If less than four million exists per partition, we recommend a max of six replicas per index partition. If more than 4 million items exist per index partition, we flag if more than 3 replicas per index partition is detected.</p>  <p>Another check evaluates if more than ten million items exist in a given index partition. If true, we flag it and provide feedback. As part of the Index Component and Scale evaluation, this command-let also test if an uneven number of index replicas exists across index partitions. That is, it scans the number of index replicas per index partition across the Search Topology and flags if an uneven number of partitions exists. For Example, if Index Partition 1 hosts two replicas while Index Partition 2 hosts three replicas it will be flagged. Another example of a check performed is if more than 25 index partitions exists in the active Search Topology, we’ll flag that the supported limit has been reached. Finally, the index component and scale portion checks if a large number of partitions with a low number, less than 50%, of active docs in each partition. This could potentially suggest an environment is over scaled and provides a heads up. However, it’s quite possible the index corpus will grow into this Index setup which is perfectly okay.</p>  <p>&#160;</p>  <p>&#160;</p>  <p><strong><span style="font-size:x-small;"><font size="2">Setup Get-SRxTopologyReports</font></span></strong></p>  <ol>   <li>SRx Dashboard is required to be installed on the machine. Follow guidance <a href="https://blogs.msdn.com/b/sharepoint_strategery/archive/2016/02/01/announcing-search-health-reports-srx-for-sharepoint-search-diagnostics.aspx">here</a> if needed.</li>    <li>Download the Enable-SRxTopologyDiag.zip file near the bottom of this blog and unzip into the SRx\Modules\Search Folder:</li> </ol>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/6607.clip_image009_2A72E86D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/6607.clip_5F00_image009_5F00_2A72E86D.png"><img title="clip_image009" style="display:inline;background-image:none;" border="0" alt="clip_image009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/0358.clip_image009_thumb_65C64E2B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/0358.clip_5F00_image009_5F00_thumb_5F00_65C64E2B.png" width="244" height="141" /></a></p>  <p>Note: The above screenshot shows the new module Enable-SRxTopologyDiag.psm1 is extracted.</p>  <p>&#160;</p>  <p><strong><span style="font-size:x-small;"><font size="2">Running SRx Topology Reports</font></span></strong></p>  <p>1. Launch SharePoint 2013 Management shell and navigate to the SRx directory and run the following:</p>  <blockquote>   <p><em>.\initSRx.ps1</em></p> </blockquote>  <p>2. Next, run the command-let: <em>Get-SRxTopologyReports</em></p>  <p>Here is an example of the output:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/3414.clip_image011_15F029A0.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/3414.clip_5F00_image011_5F00_15F029A0.jpg"><img title="clip_image011" style="display:inline;background-image:none;" border="0" alt="clip_image011" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/52/metablogapi/1817.clip_image011_thumb_2E1624AC.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-52-metablogapi/1817.clip_5F00_image011_5F00_thumb_5F00_2E1624AC.jpg" width="244" height="192" /></a></p>  <p>&#160;</p>  <p><strong>Disclaimer:</strong>&#160; We released the Search Health Reports (SRx) to help others get more out of Search, but the SRx should not be considered an official product . ALL information in this blog is provided &quot;AS IS&quot; with no warranties and confers no rights. This blog does not represent the thoughts, intentions, plans or strategies of my employer. All content is solely my opinion and provided with a best effort to be based in reality.</p>  <p>All examples, code samples, demonstrations, or anything resembling a “how-to” are provided &quot;AS IS&quot; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. Inappropriate comments will be deleted at the authors discretion.</p><div style="clear:both;"></div><img src="https://blogs.msdn.com/aggbug.aspx?PostID=10671543" width="1" height="1" alt=" " />]]></content:encoded>
    </item>
    <item>
      <title>Announcing the Search Health Reports (SRx) for SharePoint Search Diagnostics</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/announcing-the-search-health-reports-srx-for-sharepoint-search-diagnostics</link>
      <pubDate>Mon, 01 Feb 2016 02:45:00 GMT</pubDate>
      <dc:creator><![CDATA[bspender]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2016/02/01/announcing-the-search-health-reports-srx-for-sharepoint-search-diagnostics/</guid>
      <description><![CDATA[Brought to you by SearchEngineers@microsoft.com , the Search Health Reports (SRx) is a...]]></description>
      <content:encoded><![CDATA[Brought to you by SearchEngineers@microsoft.com , the Search Health Reports (SRx) is a PowerShell-driven tool for surfacing complex diagnostics for SharePoint Search through new multifaceted reports. The SRx includes a battery of tests that leverage a...(<a href="https://blogs.msdn.com/b/sharepoint_strategery/archive/2016/02/01/announcing-search-health-reports-srx-for-sharepoint-search-diagnostics.aspx">read more</a>)<img src="https://blogs.msdn.com/aggbug.aspx?PostID=10667503" width="1" height="1" alt=" " />]]></content:encoded>
    </item>
    <item>
      <title>Using site columns to create searchable metadata in SharePoint Online (Office 365)</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/using-site-columns-to-create-searchable-metadata-in-sharepoint-online-office-365</link>
      <pubDate>Fri, 11 Dec 2015 10:43:35 GMT</pubDate>
      <dc:creator><![CDATA[Dan Harrington (AMS)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2015/12/11/using-site-columns-to-create-searchable-metadata-in-sharepoint-online-office-365/</guid>
      <description><![CDATA[A SharePoint site column[1] is a field definition that defines data or metadata that can be...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:arial,helvetica,sans-serif;font-size:small;">A <a href="https://msdn.microsoft.com/en-us/library/ee535893.aspx" target="_blank">SharePoint site column</a>[1] is a field definition that defines <a href="https://msdn.microsoft.com/en-us/library/ms450825.aspx" target="_blank">data or metadata that can be associated with items in a list or documents in a document library</a>[2], and is a widely used technique in customizing SharePoint.&nbsp; This article will review how site columns can be used in SharePoint Online, both in adding custom metadata values to Microsoft Word or other Office documents, and also using this property do a fielded search.&nbsp;&nbsp; We conclude with the steps to configure the site column term as a refiner on the search results page.</span></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small;">To investigate this functionality we&#39;ll consider a hypothetical requirement to mark each document stored in a site&#39;s document library with a Color label, choosing from one of a small set of values.&nbsp; We begin by <a href="https://support.office.com/en-us/article/Create-a-site-column-844EBA84-C32E-490E-9709-FD7DC84C6914" target="_blank">creating a site column in our Office 365 SharePoint site</a>[3] from the Site Settings page of the site collection, and add it to the group Custom Columns.&nbsp; By selecting data type Choice, we can list the explicitly allowed values of either Red, Yellow, Green or Blue.</span></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-family:arial,helvetica,sans-serif;font-size:small;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/1_CreateSiteColumn_A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/1_5F00_CreateSiteColumn_5F00_A.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/1_CreateSiteColumn_A.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/1_5F00_CreateSiteColumn_5F00_A.png" border="0" /></a></span></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-family:arial,helvetica,sans-serif;font-size:small;">The <span style="font-weight:bold;">Description</span> section provides an opportunity to provide an explanation of what this field is to be used for, and whatever text is added here will be shown in the document upload form to help the users make an appropriate choice of value.</span></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/2_CreateSiteColumn_B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/2_5F00_CreateSiteColumn_5F00_B.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/2_CreateSiteColumn_B.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/2_5F00_CreateSiteColumn_5F00_B.png" border="0" /></a></span></p>
<p></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small;">It is then added to the site&#39;s shared document library as a default column, via the Library Settings interface on the Library tab of the document library, by clicking the &quot;Add from existing site columns&quot; option.</span></p>
<p></p>
<p style="margin:0in;color:#1f497d;font-family:Calibri;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/3_AddDocLibrary.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/3_5F00_AddDocLibrary.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/3_AddDocLibrary.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/3_5F00_AddDocLibrary.jpg" border="0" /></a></p>
<p style="margin:0in;color:#1f497d;font-family:Calibri;font-size:11pt;"></p>
<p style="margin:0in;color:#1f497d;font-family:Calibri;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/4_AddCustomColumn.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/4_5F00_AddCustomColumn.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/4_AddCustomColumn.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/4_5F00_AddCustomColumn.png" border="0" /></a></p>
<p style="margin:0in;color:#1f497d;font-family:Calibri;font-size:11pt;"></p>
<p style="margin:0in;color:#1f497d;font-family:Calibri;font-size:11pt;"></p>
<p style="margin:0in;color:#1f497d;font-family:Calibri;font-size:11pt;"><span style="font-size:small;font-family:arial,helvetica,sans-serif;color:#000000;">If we then upload an existing word document to this library, the form will prompt for this new property, and supply the default value that was specified when the site column was created.</span></p>
<p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/5_UploadDocForm.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/5_5F00_UploadDocForm.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/5_UploadDocForm.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/5_5F00_UploadDocForm.png" border="0" /></a></p>
<p></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">The next interesting case is to create a Word 2016 document with this metadata setting as a built-in custom property, to&nbsp;verify that it&nbsp;would be recognized during the upload to SharePoint Online and mapped to the existing site column.&nbsp; <a href="https://support.office.com/en-US/article/View-or-change-the-properties-for-an-Office-2016-file-672540d1-019c-46bb-8a48-2e05770c4b9b" target="_blank">Adding a custom property to a document </a>is described in the Office.com support pages [4], and won&#39;t be spelled out here.&nbsp; For our testing we created a custom property named Color of type Text in a Word document (via the Advanced Properties, Custom tab), and gave it a non-default value matching a one of the choices created in the SPO site column.&nbsp; The SharePoint Online upload process did successfully read this value from the Word 2016 document, and displayed it as the default value in the upload form.</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/6_nonDefColorUpload.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/6_5F00_nonDefColorUpload.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/6_nonDefColorUpload.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/6_5F00_nonDefColorUpload.png" border="0" /></a></p>
<p>&nbsp;</p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">A SharePoint Online site crawl generally picks up new content within a short period of time, so after some interval the document should be returned in search results for an appropriate query.&nbsp; Site column fields will be picked up in the crawl as a <a href="https://support.office.com/en-us/article/Manage-the-search-schema-in-SharePoint-Online-d4fab46d-ba41-4c03-9d4c-32b5b33198b6" target="_blank">Crawled Property and mapped to a Managed Property</a>[5], with both of them created automatically as necessary.&nbsp; More details on how the <a href="https://blogs.technet.com/b/tothesharepoint/archive/2013/03/06/from-site-column-to-managed-property-what-s-up-with-that.aspx" target="_blank">automatically created crawled and managed property names are determined </a>have been documented in a blog post[6], and in this specific case the property names, incorporating the field name and data type of the site column, would be:</span></p>
<div style="margin-left:30px;">
<table style="width:241px;height:59px;margin-left:60px;" border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="text-align:center;">
<p><strong>Crawled Property</strong></p>
</td>
<td style="text-align:center;">
<p><strong>Managed Property</strong></p>
</td>
</tr>
<tr>
<td style="text-align:center;">
<p>ows_q_CHCS_Color</p>
</td>
<td style="text-align:center;">
<p>ColorOWSCHCS</p>
</td>
</tr>
</tbody>
</table>
</div>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small;">On the SharePoint Online site a search for <strong>ColorOWSCHCS:Restricted</strong> returned the test documents uploaded with that setting, but not others with value &ldquo;Confidential&rdquo;.</span></p>
<p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/7_CustomPropSearch.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/7_5F00_CustomPropSearch.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/7_CustomPropSearch.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/7_5F00_CustomPropSearch.png" border="0" /></a></p>
<p></p>
<p></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">While having this automatically created Managed Property available is helpful, it is not particularly user-friendly and&nbsp; lacks the full support of a custom created Managed Property, in particular the ability to use it as a refiner.&nbsp; In SharePoint Online this can be configured via the tenant&#39;s Search Schema interface by <a href="https://support.office.com/en-US/article/Manage-the-search-schema-in-SharePoint-Online-D4FAB46D-BA41-4C03-9D4C-32B5B33198B6#__ref341260321" target="_blank">modifying one of the numerous unused predefined Managed Properties</a>[7], giving it a user-friendly Alias matching the document property name.&nbsp; In this case, we&#39;ll utilize the RefinableString00 property, giving it the Alias value Color, and map the automatically created ows_q_CHCS_Color crawled property to it.</span></p>
<p></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/8_ModifyManProp.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/8_5F00_ModifyManProp.png"><img style="width:706px;height:166px;" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/8_ModifyManProp.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/8_5F00_ModifyManProp.png" border="0" height="155" width="551" /></a></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"></p>
<p></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-size:small;font-family:arial,helvetica,sans-serif;">This customization improves the metadata search experience, as shown below, and will also enable its use as a refiner in the query results.</span></p>
<p></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/9_SearchResultsFilter.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/9_5F00_SearchResultsFilter.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/9_SearchResultsFilter.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/9_5F00_SearchResultsFilter.png" border="0" /></a></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-size:small;font-family:arial,helvetica,sans-serif;">Customization of the search results page is done by first choosing &quot;Edit Page&quot; from the Settings cog , then selecting Edit Web Part from the pulldown in the Refinement web part on the left side of the page in the Navigation Zone.</span></p>
<p></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/10_EditWebPart.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/10_5F00_EditWebPart.jpg"><img style="width:470px;height:468px;" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/10_EditWebPart.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/10_5F00_EditWebPart.jpg" border="0" height="539" width="550" /></a></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-size:small;font-family:arial,helvetica,sans-serif;">By clicking the &quot;Choose Refiners&quot; button on the resulting Properties menu, the RefinableString00 refiner is added to the &quot;Selected Refiners&quot; list, and given the display name Color.</span></p>
<p></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/12_CustomRefinerDisplay.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/12_5F00_CustomRefinerDisplay.png"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/11_ConfigRefinement.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/11_5F00_ConfigRefinement.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/11_ConfigRefinement.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/11_5F00_ConfigRefinement.png" border="0" /></a></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-size:small;font-family:arial,helvetica,sans-serif;">After using the &quot;Move Up&quot; button to put this new navigator at the top of the &quot;Selected Refiners&quot; list in the Refinement web part, the Color refiners are displayed for search results and available to filter the results to the appropriate selection.</span></p>
<p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/12_CustomRefinerDisplay.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/12_5F00_CustomRefinerDisplay.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/02/12_CustomRefinerDisplay.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-02/12_5F00_CustomRefinerDisplay.png" border="0" /></a></p>
<p></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">While the focus of this article has been on customization of SharePoint Online, the techniques described here are also&nbsp; available in on-premises SharePoint installations.&nbsp; For further background on aligning document properties and SharePoint columns, see the blog &quot;<a href="https://blogs.technet.com/b/wbaer/archive/2014/08/29/document-property-promotion-and-demotion-overview-and-considerations.aspx" target="_blank">Document Property Promotion and Demotion Overview and Considerations</a>&quot; [8].</span></p>
<h3></h3>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><strong><span style="font-size:small;font-family:arial,helvetica,sans-serif;">References:</span></strong></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[1] &quot;Building Block: Columns and Field Types&quot; - <a href="https://msdn.microsoft.com/en-us/library/ee535893.aspx">https://msdn.microsoft.com/en-us/library/ee535893.aspx</a></span></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[2] &quot;Introduction to Columns&quot; general SharePoint overview - <a href="https://msdn.microsoft.com/en-us/library/ms450825.aspx">https://msdn.microsoft.com/en-us/library/ms450825.aspx</a></span></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[3] SharePoint Online &quot;Create a site column&quot; -&nbsp; <a href="https://support.office.com/en-us/article/Create-a-site-column-844EBA84-C32E-490E-9709-FD7DC84C6914">https://support.office.com/en-us/article/Create-a-site-column-844EBA84-C32E-490E-9709-FD7DC84C6914</a></span></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[4] &quot;View or change the properties for an Office 2016 file&quot; - <a href="https://support.office.com/en-US/article/View-or-change-the-properties-for-an-Office-2016-file-672540d1-019c-46bb-8a48-2e05770c4b9b">https://support.office.com/en-US/article/View-or-change-the-properties-for-an-Office-2016-file-672540d1-019c-46bb-8a48-2e05770c4b9b</a></span></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[5] &quot;Manage the search schema in SharePoint Online&quot; - <a href="https://support.office.com/en-us/article/Manage-the-search-schema-in-SharePoint-Online-d4fab46d-ba41-4c03-9d4c-32b5b33198b6">https://support.office.com/en-us/article/Manage-the-search-schema-in-SharePoint-Online-d4fab46d-ba41-4c03-9d4c-32b5b33198b6</a></span></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[6] &quot;From site column to managed property &ndash; What&#39;s up with that?&quot; - <a href="https://blogs.technet.com/b/tothesharepoint/archive/2013/03/06/from-site-column-to-managed-property-what-s-up-with-that.aspx">https://blogs.technet.com/b/tothesharepoint/archive/2013/03/06/from-site-column-to-managed-property-what-s-up-with-that.aspx</a></span></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[7] &quot;Create a managed property by renaming an existing one&quot; - <a href="https://support.office.com/en-US/article/Manage-the-search-schema-in-SharePoint-Online-D4FAB46D-BA41-4C03-9D4C-32B5B33198B6#__ref341260321">https://support.office.com/en-US/article/Manage-the-search-schema-in-SharePoint-Online-D4FAB46D-BA41-4C03-9D4C-32B5B33198B6#__ref341260321</a></span></p>
<p><span style="font-size:small;font-family:arial,helvetica,sans-serif;">[8] &quot;Document Property Promotion and Demotion Overview and Considerations&quot; - <a href="https://blogs.technet.com/b/wbaer/archive/2014/08/29/document-property-promotion-and-demotion-overview-and-considerations.aspx">https://blogs.technet.com/b/wbaer/archive/2014/08/29/document-property-promotion-and-demotion-overview-and-considerations.aspx</a></span></p>
<h3><span style="font-family:arial,helvetica,sans-serif;font-size:small;">&nbsp;</span></h3>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-family:arial,helvetica,sans-serif;font-size:small;">&nbsp;</span></p><div style="clear:both;"></div><img src="https://blogs.technet.com/aggbug.aspx?PostID=3658150&amp;AppID=10402&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1" alt=" " />]]></content:encoded>
    </item>
    <item>
      <title>SharePoint Search Topology Limits Clarified for the Crawl Component</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/sharepoint-search-topology-limits-clarified-for-the-crawl-component</link>
      <pubDate>Mon, 30 Nov 2015 02:30:00 GMT</pubDate>
      <dc:creator><![CDATA[bspender]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2015/11/30/sharepoint-search-topology-limits-clarified-for-the-crawl-component/</guid>
      <description><![CDATA[As more environments begin scaling out to the documented limits for Search, a common question tends...]]></description>
      <content:encoded><![CDATA[As more environments begin scaling out to the documented limits for Search, a common question tends to get asked... &quot;Does the Crawl Component count against the 64 component limit?&quot; The short answer is... no, the Crawl Component does not count against...(<a href="https://blogs.msdn.com/b/sharepoint_strategery/archive/2015/11/30/sharepoint-search-topology-limits-clarified.aspx">read more</a>)<img src="https://blogs.msdn.com/aggbug.aspx?PostID=10657179" width="1" height="1" alt=" " />]]></content:encoded>
    </item>
    <item>
      <title>Recreating the Popular Searches Web Part in SharePoint 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/onsearch/recreating-the-popular-searches-web-part-in-sharepoint-2013</link>
      <pubDate>Wed, 11 Nov 2015 10:00:00 GMT</pubDate>
      <dc:creator><![CDATA[NathanBrackett]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/onsearch/2015/11/11/recreating-the-popular-searches-web-part-in-sharepoint-2013/</guid>
      <description><![CDATA[If you&#39;ve upgraded from SharePoint 2010 to 2013 and previously made use of the Popular Searches...]]></description>
      <content:encoded><![CDATA[<p>If you&#39;ve upgraded from SharePoint 2010 to 2013 and previously made use of the Popular Searches web part, you may or may not have noticed that it no longer exists. In its place, there are now Popular Items and Recommended Items web parts (see: <a href="https://technet.microsoft.com/en-us/library/dn794211.aspx">https://technet.microsoft.com/en-us/library/dn794211.aspx</a>). While these web parts are all well and good, if you are looking to recreate the Popular Searches web part in SharePoint 2013 and don&#39;t know where to start then look no further. In this blog I&#39;ll quickly walk through how you can do this with fairly minimal customization.</p>
<p>For the uninitiated, the Popular Searches web part simply displayed a number of popular search terms and provided the ability for a user to click on the term and immediately be taken to the search results page for that query. This could be placed anywhere but typically was found on the primary search entry page somewhere near the search box. In order to recreate this we have 2 challenges:</p>
<ol>
<li>GET THE DATA</li>
<li>DISPLAY THE DATA</li>
</ol>
<p><strong>STEP 1: GET THE DATA</strong></p>
<p>While Web Analytics no longer exists in SharePoint 2013, the SharePoint UI does track almost all search interactions (queries, clicks, etc). We won&#39;t get into much detail about it here (see this for more detail: <a href="https://blogs.msdn.com/b/nathan_brackett/archive/2014/07/03/search-reporting-and-sharepoint-2013-introduction.aspx">https://blogs.msdn.com/b/nathan_brackett/archive/2014/07/03/search-reporting-and-sharepoint-2013-introduction.aspx</a>), but we will be leveraging some custom PowerShell scripts found here:&nbsp;<a href="https://www.microsoft.com/en-us/download/details.aspx?id=43394">https://www.microsoft.com/en-us/download/details.aspx?id=43394</a></p>
<p>Once downloaded and imported, let&#39;s grab a bit of data just to make sure there are no connectivity problems. On our lab environment we can pull down 30 days of data relatively quickly. This will vary based on how much traffic your search center receives:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/5722.b1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/5722.b1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/5722.b1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/5722.b1.png" alt=" " /></a></p>
<p>So far so good. Now, since we&#39;re looking to get popular searches, let&#39;s focus only on searches that are coming directly to our Search Center Site. This will immediately prune out queries that are coming in from other sites and will reduce the complexity of queries that we&#39;re running a popular analysis on:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/4048.b2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/4048.b2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/4048.b2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/4048.b2.png" alt=" " border="0" /></a></p>
<p>At this point, you can either use the popular aggregation functions that exist in the script or roll your own. For the purposes of simplicity and example, we rolled our own. You can of course add any additional logic you&#39;d like to whether it&#39;s filtering, parsing the query a bit, etc.:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/2543.b3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/2543.b3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/2543.b3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/2543.b3.png" alt=" " border="0" /></a></p>
<p>A little utility function like this will group up your raw search entries on QueryHash, which is a numeric representation of the actual query term. It will then sort them out by occurrence and choose the top X searches by term. PopularSearchEntry in this case is a convenience class to store our data. The Query and Count members are relatively obvious. We&#39;ll get into why we need the Url member very soon. Let&#39;s take a look at some popular searches based on what we have so far:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/6746.b4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/6746.b4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/6746.b4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/6746.b4.png" alt=" " border="0" /></a></p>
<p>Great, this is looking close to the data structure we need to put this together. Now for the Url. The Url in this case is going to be a link that lets the user go directly to a search results page. In our lab, we want that link structure to look something like this:&nbsp;<a href="https://nmsp01/sites/ootbsearch/Pages/results.aspx?k=sharepoint">https://nmsp01/sites/ootbsearch/Pages/results.aspx?k=sharepoint</a></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/7455.b5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/7455.b5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/7455.b5.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/7455.b5.png" alt=" " border="0" /></a></p>
<p>Now that we have the data prepared, let&#39;s move on to the next step.</p>
<p><strong>STEP 2: DISPLAY THE DATA</strong></p>
<p>The data we are looking to display is relatively straightforward. We have a Query Term, optionally a Count, and we want to use our Url field as the link for each item. In the interest of keeping things very simple, we can use an out of the box Content by Query web part. That requires that we push our popular search data into a SharePoint list. In our lab, we created a list with a few custom fields directly on the Search Center site. Also, don&#39;t forget to disable crawling of this list as we don&#39;t really need this data being surfaced in search results.</p>
<p>Populating this data can be automated using whatever mechanism you prefer. PowerShell can be used either on server side or using CSOM. We just need to get the data into a list in order to display it to end users. Eventually, you&#39;ll want a list that looks a bit like this:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/7450.b6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/7450.b6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/7450.b6.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/7450.b6.png" alt=" " border="0" /></a></p>
<p>And finally for the end user display. Add in a Content Query web part from the Content Rollups section. You&#39;ll want to reference the list you created (in our case, &quot;Popular Queries&quot;) and use the Query field as the title and the Link To Search field as the link. You can add this web part to any page you like. In our lab, we added it to the front page of the search center. Clicking on any of the links will take a user directly to the results page using each of the query terms presented:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/0363.b7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/0363.b7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/64/80/0363.b7.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-64-80/0363.b7.png" alt=" " border="0" /></a></p><div style="clear:both;"></div><img src="https://blogs.msdn.com/aggbug.aspx?PostID=10653849" width="1" height="1" alt=" " />]]></content:encoded>
    </item>
  </channel>
</rss>