Search is optimised for relevance, and will not contain every tweet containing “Lionel Messi” - also the Search API and Search in Web are different systems, and may show different results (Search API is limited to last ~7 Days)
Stream will attempt to match tweets as they are created, and send you everything that matches a filter (with a ratelimit of 1% of the total number of all tweets)
Hope that helps clear things up!