The engine differentiates between independent terms, and adjacent terms
forming a phrase. The latter is e.g. used for mail addresses and file
names, "firstname.lastname@example.org" or "foo_bar.png". In the database these are stored
without any punctuation characters, but with their relative positions.
While most punctuation characters (e.g. ".", ",", "/", "-", ...) are
treated the same, underscore was handled differently. A query for
"foo-bar.png" searches for the three adjacent terms, while "foo_bar png"
searches for the three terms in any order.
Treat "_" like any other punctuation character. For this to work, the
delimiter has to be checked from the original input string, not the
text mangled for QTextBoundaryFinder.