The search algorithm is designed to find companies, it is not designed to NOT find companies.
The search is not a simple search through a couple of fields, it is a complex search with parsed search terms against a pre-built index of multiple fields and combinations of fields, utilising partial matching, inverted-indexes, frequency algorithms, cadence, weighted scores, fuzzy matching, stemming, synonyms, company name ending synonyms (English and Welsh), soundex etc. The search does not search our company names and numbers directly, but rather searches multiple INDEXES of the company names and numbers. The search string is parsed before being passed to the search engine to try and identify what the customer could be searching on. For example, if there is a single search term and it matches what COULD be a company number, it tries an exact match against the company number field, but also searches against other parts of our indexes. It also attempts to identify postcodes. All this is performed over a distributed, highly available search engine, handling 1000's of searches a second.
BUT the single overriding aim of our complex search system it to find the single company a customer is looking for or at least get it to be in the first 10 matches. It is not to trawl through our complete company names and numbers, there are other products for that.
All that said, the search is an 'OR' and a 'AND' search, that searches indexes of the company name, company number, surname,forename, other names and postcode, with some analysis on other fields like dissolved dates to help with relevance.
Hope this helps.