0

私はページを見つけるためのタグを実装しており、基本的にタグ、ページ、タグページの 3 つのテーブル構造を持っています。サイトのメニュー システムについては、少数のリンクをタグにマップして、関連性について知識に基づいて推測できるようにしたいと考えています。Googleレベルの検索結果を探しているのではなく、多くの結果を除外する1つの用語での単なる検索を超えた何か. 例えば恋愛リンクなら、恋愛以外に恋愛や恋愛などのタグをつけて欲しいです。タグは非常に一般的であるため、完全に一致しないタグで結果を引き出すための確立されたタグエンジンはありますか? 複数の検索語を含む where 句を作成することを考えていますが、少し扱いに​​くくなり始めています。以下よりも良い方法はありますか?

考えられるアプローチ:

$sql = "SELECT * FROM tagpages WHERE";
switch ($tag)
{
case "romance": 
$where = "tag = 'relationship' || 
tag== 'love' ||
tag== 'breakup";
break;
case "sports":
$where = "tag = 'football' || 
tag== 'baseball' ||
tag== 'hockey";
break;
case "politics":
$where = "tag = 'election' || 
tag== 'presidential'";
break;
default:
$where = "";
}
$sql .= $where;
4

2 に答える 2

0

この質問を見つけた人のために、私は SQL クエリで Match Against を使用するより良いアプローチと思われる方法を採用しました。リンクに似たタグや検索語 (関係、ロマンス、愛など) については、$keywords = "romance, love, Maritime"; のように、好きな長さのキーワードの文字列を作成してください。新しい用語を学習したら、それに追加できます。次に、SQL クエリ $sql = "SELECT * FROM pages Match (shdescript, longdescript) Against ('$keywords')"; を実行します。これを機能させるには、MYSQL で検索対象のフィールド (shortdescript と longdescript) にフルテキスト インデックスを作成する必要があります。良い点は、特定の MYSQL エンジンにはかなり強力な検索エンジン機能があるため、関連性によって実際に検索結果をランク付けすることです。例えば、複数のテーブルにわたるMysql全文検索の関連性、または単にデフォルトを使用します。

于 2012-05-31T11:59:59.393 に答える