I have a stored procedure using MATCH AGAINST that was originally returning data sorted by relevance, which is what I wanted. However, when I added a LEFT JOIN and a second MATCH AGAINST, it is now returning data from both, but no longer sorting by relevance. It is now automatically sorting by the ID.
Returning from one table sorted by relevance:
BEGIN
SELECT
dictionary.id,
dictionary.`term`,
dictionary.`definition`
FROM itDictionary dictionary
WHERE MATCH(dictionary.term, dictionary.definition)
AGAINST(_query IN NATURAL LANGUAGE MODE);
END
Returning from two tables but somehow sorting by ID:
BEGIN
SELECT
dictionary.id,
dictionary.`term`,
dictionary.`definition`,
links.id,
links.`name`,
links.`url`
FROM itDictionary dictionary
LEFT JOIN itRelatedLinks links ON links.term_id = dictionary.id
WHERE MATCH(dictionary.term, dictionary.definition)
AGAINST(_query IN NATURAL LANGUAGE MODE)
OR MATCH(links.name)
AGAINST(_query IN NATURAL LANGUAGE MODE);
END
Am I close?
You can do something like this
It would add the score of both and have so a combined score to sort by
Of xourse you can add a factor to each score to prioritise one