MySQL查询与PHP匹配关键字和排名根据最匹配

时间:2018-11-13 16:54:09

标签: php mysql sql

tbl index.tbl如下所示:

id | Url                    | Description
0  | http://cheapnames.it   | Register Domain Names from $1 to $25.
1  | http://lownames.usa    | Get Domain Names from $1 to $20.
2  | http://lowcostnames.uk | Register Domains for as low as $1.
3  | http://getdoman.biz    | Register Names from between $1 to $25.

现在,假设您搜索了“注册域名”。

我希望查询根据最匹配的关键字(匹配数)对行进行排名。因此,从我们的示例来看,排名应该是这样的:

0| http://cheapnames.it   | Register Domain Names from $1 to $25.
1| http://lownames.usa    | Get Domain Names from $1 to $20.
3| http://getdoman.biz    | Register Names from between $1 to $25.
2| http://lowcostnames.uk | Register Domains for as low as $1.
  • 请注意,id = 0具有3个KWs匹配项。因此在顶部。
  • id = 1和id = 3都有2个匹配项。因此,第二和第三。在这2个中,排名优先级基于“ id”(链接提交ID)给出。
  • 当然,最后匹配的行在底部。

问题:

  1. 您将如何编写Sql查询来像我描述的那样进行查询和排名?

  2. 仅仅是Sql查询在这里足以进行描述的排名显示,还是必须获取php才能进行排名显示?或者,也许Sql除了php之外根本不应该进行排名显示?在那种情况下,我可以看看php示例代码吗?

到目前为止我没有得到什么好处

$query = "SELECT * FROM notices WHERE description = register AND Domain AND 
Names"; 

请将代码示例显示为我的示例无法处理“最匹配排名”。

  1. 要记住,链接描述将受到限制,就像您在搜索引擎结果页面(SERP)中看到的那样,我应该在mysql类型中选择VARCHAR(255)还是TinyText还是Text或FullText作为列类型?

0 个答案:

没有答案