0

Web サイトの任意のページの SEO タイトル/説明を管理したいクライアントがいるので、URL/タイトル/説明を入力できるモジュールを作成することを考えました。Web サイトはそのページのエントリがあるかどうかを確認します。 、ある場合は表示します。

私はこれを試しました:

$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';
}

クライアントは次のようなバックエンド 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
  • 等..

その後、Web サイトのユーザーはこれらの URL のいずれかにアクセスできるため、いずれかの URL を、クライアントがバックエンドで入力したいずれかの URL と一致させる方法が必要です。

これを行う方法についての手がかりはありますか?

4

1 に答える 1

0

LIKE %varible%It's a slow query で検索を行いますが、動作します。

テーブル エンジンは 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 に答える