根据其他领域的相关性对MySQL搜索结果进行排名

时间:2014-03-02 03:12:20

标签: php mysql sql

我有一个查询,它将检查文档表中包含正在搜索的单词的所有列,并显示应该链接到的匹配用户数据。但是,我的问题来自于尝试根据相关性对搜索结果进行排名。

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个字段。如果有人能引导我朝着正确的方向前进,那将会有很大的帮助。

0 个答案:

没有答案
相关问题