我有一个查询,它将检查文档表中包含正在搜索的单词的所有列,并显示应该链接到的匹配用户数据。但是,我的问题来自于尝试根据相关性对搜索结果进行排名。
select distinct a.*
from application a,
document d
where ( d.`DocID` like "%president%"
or d.`AppID` like "%president%"
or d.`TypeID` like "%president%"
or d.`IDnum` like "%president%"
or d.`Activity` like "%president%"
or d.`Role/Position` like "%president%"
or d.`Date` like "%president%"
or d.`Venue` like "%president%"
or d.`BriefDescription` like "%president%"
or d.`NameoftheOrganization` like "%president%"
or d.`TermofOffice` like "%president%"
or d.`SpecialAward/Achievement` like "%president%"
or d.`Attachments` like "%president%"
or d.`Attachmentsb` like "%president%"
or d.`Attachmentsc` like "%president%"
or d.`Remarks` like "%president%" )
and d.`AppID` = a.`AppId`
当相关性不是问题时,上述声明可以完成工作,但是,我想要完成的是,如果找到“总统”这个词,我还需要根据行中的其他字段对其相关性进行排名这将包含国家,国际等某些词语(这些关键词不会存储在数据库中,如果需要,可以将它们写入查询本身)
示例:在角色/位置中包含“总统”并且在BriefDescription中包含“国际”的一行的人的排名将高于在角色/位置中包含“总统”且在BriefDescription中包含“本地”的2行的人。关键字排名不仅限于BriefDescription字段,因为其他字段也可能包含所述关键字。
不同的例子:如果我搜索“获奖者”,任何领域中“国际获奖者”的人排名都会高于“国家获奖者”。
我已经阅读了有关FULLTEXT搜索的内容,在网上寻找适用于我的设置的解决方案,但我仍然不确定如何开始和解决我的问题,因为大多数示例都是针对不超过的查询最多比较2或3个字段。如果有人能引导我朝着正确的方向前进,那将会有很大的帮助。