I don't think there is a way to rank sources like you're describing, but you may be able to do something like:;WITH Results (TablePK, SearchRank) AS ( SELECT DISTINCT t.pk_id, RANK() OVER ( PARTITION BY t.pk_id ORDER BY CASE WHEN fts1.[key] IS NOT NULL THEN 1 WHEN fts2.[key] IS NOT NULL THEN 2 WHEN fts3.[key] IS NOT NULL THEN 3 ELSE 4 END ASC) FROM [schema].tblSearchMe t LEFT OUTER JOIN FREETEXTTABLE([schema].tblSearchMe, [FirstColumnToSearch], @SearchText) fts1 ON fts1.[key] = t.pk_id LEFT OUTER JOIN FREETEXTTABLE([schema].tblSearchMe, [SecondColumnToSearch], @SearchText) fts2 ON fts2.[key] = t.pk_id LEFT OUTER JOIN FREETEXTTABLE([schema].tblSearchMe, [ThirdColumnToSearch], @SearchText) fts3 ON fts3.[key] = t.pk_id ) SELECT tbl.*FROM [schema].tblSearchMe tblINNER JOIN Results r ON r.TablePK = tbl.pk_idORDER BY r.SearchRank ASC;
I haven't tested this, and frankly I'd imagine this to bee less than ideal, but it would probably work.___________________________Geek At Large