SELECT cvid,WEIGHT() as weight FROM index WHERE MATCH(’“pr manager”’) ORDER BY weight DESC LIMIT 0,50 OPTION max_matches=50, ranker=expr(‘sum((4lcs+2(min_hit_pos==1)+exact_hit)*user_weight)1000+bm25-7diffindays’), field_weights = (title=5,summary=3)
my results include the following:
Project Manager, Technical Engineer
Junior Product Marketing Manager, Advanced use of Microsoft Office, portfolio management skills.
So I am searching for “pr manager” and the results include “Project Manager” and “Product manager”.
I would expect that using double quotes would only include only the exact phrase.
Do you perhaps have min_infix_len (or min_prefix_len) set on the index? Perhaps with expand_keywords?
… so the query gets in effect ‘expanded’ to MATCH(’“*pr* manager”’) which then matches part words.
The ‘phrase operator’ only makes it so matches those keywords adjacent. (ie one then other) - doesn’t enforce them to be an ‘exact’ match, bypassing wordforms/morphology, and even part word matches.
Using index_exact_words would allow you to use the exact form operator, to bypass keyword expansion.
So could then run WHERE MATCH(’“=pr manager”’)
Then ‘=pr’ would only match explicitly ‘pr’, rather than anything that starts with (or contains ‘pr’)