Search results with partial match to query
Is there a way for search to return a result that is only a partial match to the query to take into account slight differences between the query and a page title?


Not natively.

When you put a title of "ABC-123" into a title in Craft, it will normalize it down to " abc 123 " when putting it into the craft_searchindex table (lowercasing all letter and removing punctuation).  And Craft does a similar thing for searches (lowercases them and removes punctuation).

With subLeft and subRight enabled, searching for ABC turns it into a MySQL fulltext search with wildcards on the left and right... i.e. LIKE '%abc%' so it will match what's in the search_index table.

Likewise ABC-123 gets converted to %abc 123%, which will match, ABC 123 also gets converted to %abc 123%, which will match and 123 into %123% which will match.

ABC123 would get converted to %abc123% which wouldn't match (nor would ABB-123.

MySQL does have a SOUNDEX() method, which might do what you're looking for, but it does have enough drawbacks that Craft wouldn't use it natively.

i.e. it won't work against full text indexes, inconsistent results in non-English languages and inconsistent results with multi-byte characters (even if they are UTF-8).

Some other search services might offer more robust solutions (Algolia, Apache Lucere, etc.) that you could wrap with a plugin for searches on the front-end of a Craft site, but you should add a thumbs-up comment to this Github issue if you'd like the ability for plugins to swap out the core search provider that Craft uses wholesale (including for the Control Panel).