0

我有一个客户想要管理网站中任何页面的 SEO 标题/描述,所以我考虑制作一个模块,他可以在其中输入 URL/TITLE/DESCRIPTION 并且网站将检查该页面是否有条目,如果有,显示出来。

我试过这个:

$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

$q_seo = $conexio->query('SELECT modulseo.titol, modulseo.descripcio, MATCH(modulseo.url) AGAINST("'.$url.'") AS score FROM modulseo WHERE MATCH(modulseo.url) AGAINST("'.$url.'") ORDER BY score DESC LIMIT 0,1');

if(mysql_num_rows($q_seo)>0)
{
    $d_seo = mysql_fetch_array($q_seo);

    $titol = $d_seo['titol'];
    $descripcio = $d_seo['descripcio'];

}
else
{
    $titol = 'default title';
    $descripcio = 'default description';
}

这显然不起作用,因为我相信全文搜索只适用于匹配不同的单词,而不是 1 个单词和另一个单词之间的相似性,因为客户端可以在后端 url 中输入,例如:

  • http://www.domain.com/index.php
  • 或者http://domain.com/index.php
  • 或者http://www.domain.com/index.php?language=fr
  • 或者http://domain.com/index.php?language=fr
  • ETC..

然后网站的用户可以访问任何这些 url,因此必须有一种方法可以将任何 url 与客户端在后端输入的任何 url 匹配。

关于如何做到这一点的任何线索?

4

1 回答 1

0

使用它进行搜索LIKE %varible%是一个较慢的查询,但它会起作用。

您的表引擎必须是 MyISAM,或者如果您使用 MySQL -v 5.6+,您可以使用 InnoDB 和全文索引

mysql> select * from test;
+------+------+------------------------------+
| ids  | name | last_name                    |
+------+------+------------------------------+
|    0 | 0    | http://domain.com/index.php  |
|    1 | 0    | http://domain2.com/index.php |
|    2 | 0    | http://domain3.com/index.php |
+------+------+------------------------------+
3 rows in set (0.00 sec)

mysql> select * from test where last_name like '%http://domain.com/index.php%';
+------+------+-----------------------------+
| ids  | name | last_name                   |
+------+------+-----------------------------+
|    0 | 0    | http://domain.com/index.php |
+------+------+-----------------------------+
1 row in set (0.00 sec)
于 2012-07-10T12:32:21.597 回答