It happens because you have problems with wp-cron tasks or DNS configuration.
If you have your website hosted locally, often the domain name is just recorded in /etc/hosts file. This is normally okay for browser access (and this is why indexing is coming well but slow when your WP admin is open). But PHP can not read /etc/hosts by some reason and thus indexing procedure can not go internally.
Yes, the algorithm thinks the number of words here is more important than the exact phrase... Ideally, if we could justify the relative weight for the phrase matches. Currently, it's too low for your case, but I think if we can double it, this could solve the issue.
I think to put this parameter to settings in the near future. Thanks!