There are a lot of aspects attached to this kind of comprehensive end-to-end search design & solution. There are a lot of threads in this forum to help you with a lot of questions and you may ask other specific questions which are not answered. A few aspects to this solution are:
Design strategy based on specific requirements for each use case e.g. where the content is stored, how would it be fetched etc.
Component development strategy again based on requirements
Lucene vs Solr vs Search n Promote vs any other solution based on requirements, source & size of content to be queried, performance strategy & SLAs, caching strategy, indexing/re-indexing strategy, etc.
Business rules implementation - configuration based, scheduler based, fully automated vs partial automated etc.
depends on requirements, locale specific, user generated content, authorized vs unauthorized content, curated content, search-results overrides etc.
As Gaurav mentioned, there are lot of aspects to decide on the search solution and it depends on the scope and objective of the search.
If its a simple search within AEM web application without lot of features like boosting, relevance etc, then you can implement that within AEM (lucene) using SQL2 queries. However if its more enterprise level search, then it would be suggested to use an external search engines like Solr, Search and promote, Elastic Search etc.