Search is a really tough problem in OSM for a few reasons, but I think a lot it stems from bad address parsing.
I’ve been working on geocoder which uses a trained model to parse and classify address queries into a tokenized form. In addition to being more accurate than traditional rule-based parsing, this approach also gives the search engine more to work with beyond the tokenized boundaries of each word. The model also attaches provenance annotations to the address components, allowing the geocoder to have a better understanding of the geographic hierarchy of the components makes sense, rather than matching a string in a database.
The code is changing fast but you can try it out entirely in your browser here! Let me know if you’d like to see any specific features not on the roadmap :)