Simply to say, SharePoint Search is a “service” that provides search functionality to SharePoint farms. It’s content sources can be SharePoint sites or non-SharePoint content sources like Exchange, Fileserver and other general websites as well.
PS : “service” here means a set of individual components but acting as a single entity that can be published for consumers, like the service in a Service Oriented Architecture. In SharePoint terms it’s called “Service Application”
The building blocks of SharePoint Search Service Application are it’s components and databases.
The SharePoint Search Components are :
- Crawl component
- Content processing component
- Analytics processing component
- Index component
- Query processing component
- Search administration component
And the SharePoint’s Search Databases are :
- Crawl DB
- Link DB
- Analytics Reporting DB
- Search Administration DB
Search in SharePoint 2016 (and 2013) went through a major design change and it’s components are loosely coupled, yet coherent and each of the components are scalable separately. This was not the case with Search in MOSS 2007 or SP2010.
If your SharePoint farm is full of team sites with millions of documents which change frequently, but the number of search users are less then you can instantiate more content processing and index components. Or if it caters an internet site and number of search users are more but the number of documents/items (content source) is not large, then you can very well increase the instances of query component to match your need. For more details refer this link.
Search topology in SharePoint defines the placement of the search components in the Search Servers(host machines). Normally, a default search topology is created with all the components in the server which hosts the Central Administration. But practically we need to change that. ie., Creating multiple instances of the components in multiple servers for load balancing & fail-over. For more details refer this link.
So let’s consider that we have four SharePoint servers for the Search farm then the components are to be instantiated & placed in those four servers depending on your design.
|Index component 1 (Partition 0)||Query processing component 1||Query processing component 2||Index component 2 (Partition 0)|
|Crawl component 1||Analytics processing component 1||Content processing component 2||Search Admin component 2|
|Search Admin component 1||Content processing component 1||Analytics processing component 2||Crawl component 2|