関連性の高い内部リンクを自動的に構築する方法を探る

関連性の高い内部リンクを自動的に構築する方法を探る

内部リンクの重要性を説明する必要はありません。誰もが知っているはずです。内部リンク(および外部リンク)の関連性は非常に重要な指標です。この記事では、discuz プログラムを例に、coreseek フルテキスト検索システムを使用して関連性の高い内部リンクを構築する方法について簡単に説明します。

1. 現状

内部リンクを自動生成する方法は、一般的に 2 つあります。1 つは同じタグで内部リンクを挿入する方法、もう 1 つはキーワードを事前に指定しておき、記事内で対応するキーワードに遭遇したときに自動的に内部リンクを挿入する方法です。

しかし、この2つの方法にはそれぞれ欠点があります。前者の方法でタグを自動生成すると、存在しないタグが大量に生成されることが多く、関連性が保証されません。タグを手動で設定する場合は、長期間にわたる非常に面倒な作業になります。後者の方法では、手動でキーワードをプリセットする必要があり、面倒です。2つ目に、プリセットキーワードがない場合、内部リンクは自動的に生成されません。3つ目に、この方法は、

一般的に、コンテンツ内に対応するキーワードに遭遇した場合、同じ内部リンクが生成される相関性は高くない可能性があります。

disuzに付属している関連投稿機能も2種類に分かれています。 1 つはタグによって実装されており、前述の欠点があります。もう 1 つは Zongheng 検索によって提供されていますが、厄介なことに、この種の関連投稿は JavaScript によって実装されており、基本的に SEO には役に立ちません。

2. 関連性の高い内部リンクを自動的に生成するにはどうすればよいでしょうか?

解決すべき最初の問題は、関連性の度合いをどのように判断するかということです。特定のキーワードやタグを単に取得するのではなく、Levenshtein などのアルゴリズムを使用して、対象記事のタイトルとデータベース内の記事タイトルまたは全文を比較し、関連性の高い以前の記事を 1 つまたは複数見つけて内部リンクとして使用できます。

私の知る限り、coreseek全文検索システムは、フレーズの類似性と統計に基づく複合ランキング方式(BM25)を使用しており、このような機能を簡単かつ効率的に実装できます。私たちはそれを便利に使用できますし、能力のある人はそれを実装するための独自のプログラムを作成することもできます。

3. 以下では、discuz を例にして実装方法を説明します。

考え方は次のとおりです。投稿にアクセスするたびに、投稿のタイトルが coreseek で自動的に検索され、一致度の高い記事が見つかります。次に、見つけた記事へのリンクを投稿に追加します。

1. まず、coreseek を正しくインストールする必要があります。インストール方法については、公式 Web サイトまたは私の Web サイト www#4ji#cn を参照して、投稿 <<discuz で coreseek フルテキスト検索サーバーを設定し、独自の単語分割シソーラスを構築する>> を見つけてください。インストールは複雑に見えますが、実際には難しくありません。チュートリアルをステップごとに実行するだけです。

2. 上記の機能を実装する discuz プラグインを作成します。

プログラミングを知らなくても心配はいりません。プラグインはすでに作成されており、ダウンロード リンクは以下に記載されています。

ここでは、プラグインの動作原理を簡単に紹介します。discuz テンプレートには多くのフックがあります。ここでは、viewthread_postbottom を使用します。投稿を開いた後、viewthread_postbottom はプラグイン内の対応するメソッドをトリガーします。このメソッドは、投稿のタイトルを取得して coreseek で検索し、一致度の高い記事を見つけます。

次に、見つけた記事へのリンクを投稿に追加します。

4. メインソースコード

能力が限られているため、プログラムは完璧ではない可能性があります。ご指摘がありましたら、どうぞご指摘ください。

<?php

/**
* Discuz! X2 & X2.5 の関連記事のクラス
* @著者 D2002
* 著作権は http://www.4ji.cn にあります
*/


クラス plugin_dean_related_article {
関数 plugin_dean_related_article() {
グローバル $_G;
$this->display_qty = $_G['cache']['plugin']['dean_related_article']['display_qty'];
$this->weight = $_G['cache']['plugin']['dean_related_article']['weight'];
$this->index = $_G['キャッシュ']['プラグイン']['dean_related_article']['インデックス'];
}


}


クラス plugin_dean_related_article_forum は plugin_dean_related_article を拡張します {
パブリック関数viewthread_postbottom_output() {
グローバル $_G;
require_once libfile('class/sphinx');
$s = 新しい SphinxClient();
$s->setServer($_G['setting']['sphinxhost'], intval($_G['setting']['sphinxport']));
$s->setMaxQueryTime(intval($_G['setting']['sphinxmaxquerytime']));
$s->ランキングモードを設定します($_G['setting']['sphinxrank']);
$s->setLimits(0, $this->display_qty, $this->display_qty);
$s->setMatchMode(SPH_MATCH_ANY);

$subject = mb_convert_encoding($_G['forum_thread']['subject'],'UTF-8','GBK');
$ori_tid = $_G['フォーラムスレッド']['tid'];
$this->index==1 の場合、$result = $s->query($subject、$_G['setting']['sphinxsubindex']);
そうでない場合、$result = $s->query($subject, "*");
$tids = 配列();
結果
if(is_array($result['matches'])) {
foreach($result['matches']を$valueとして) {
if($value['attrs']['tid']&&$value['attrs']['tid']!=$ori_tid&&$value['weight']>=$this->weight) {
$tids[$value['attrs']['tid']] = $value['attrs']['tid'];
}
}
}
}

// $tids を返します。
$out="<div id='relate_subject'><div class='rs_main'><div class='rs_head'><h3 class='has_adv'>関連記事</h3></div>";
$out.="<ul id='rel_list'>";
if(!empty($tids) ){
$ids = implode(",", $tids);
$query = DB::query("SELECT tid,subject FROM ".DB::table('forum_thread')." WHERE tid IN ($ids) AND displayorder>='0' ORDER BY tid DESC");
$thread = DB::fetch($query) の間 {

$threadlist[$thread['tid']] = $thread;
}
$フラグ=1;
foreach($threadlist を $th として){
$flag==1の場合{
$out.="<li class='right_item'>";
$フラグ=0;
}それ以外{
$out.="<li class='left_item'>";
$フラグ=1;
}
$out.="<a href='thread-$th[tid]-1.html'>$th[件名]</a></li>";
}
}それ以外{
配列()を返します。
}

$out.="</ul></div></div>";
配列($out)を返します。

}

}
?>

五、

この記事は内部リンクを構築するアイデアのみを示しています。この方法が普及すれば、さまざまなプログラムやサイト間でも簡単に使用できるようになります。これが皆さんのお役に立てれば幸いです。

六、

このプラグインは厳密にテストされておらず、前提条件として coreseek がインストールされている必要があるため、discuz アプリケーションの公式 Web サイトではリリースされていません。必要な場合は、私の Web サイト http://www#4ji#cn/thread-9326-1.html から完全なインストール パッケージを無料でダウンロードできます。

この記事はFour Seasons Clothing Networkによって作成されたものです。転載の際は著作権を留保してください。

元のタイトル: 関連性の高い内部リンクを自動的に構築する方法について

キーワード: 内部リンク、関連性、ウェブマスター、ウェブサイト、ウェブサイトのプロモーション、収益化

<<:  404 ページが多数あると、Web サイトの信頼性が低下しますか?

>>:  QQグループを利用したプロモーションスキルについての簡単な説明

推薦する

「モバイル決済」、あなたのご都合に合わせてご利用ください!

みなさんこんにちは、私はXiaosiです。今、多くの人がインターネットファイナンスと金融インターネッ...

香港の高防御サーバー商人グループの紹介、香港の高防御インスタントソリューションサーバー

香港の帯域幅は高額なため、ほとんどの香港サーバーは DDoS 保護を提供していません。この投稿は、お...

ハイブリッド IT クラウド アーキテクチャとは何ですか?

この記事の目的は、ハイブリッド IT が今日のほとんどの企業で使用されている理由と、このコンピューテ...

開発、セキュリティ、運用の間の障壁を打破する方法

これらの手順は、企業が DevSecOps を正常に実装し、最初から安全なソフトウェアを作成できるよ...

ウェブサイトデータ分析に関する雑談

データ分析その他マーケティングの役職や職務には、一般的にデータの機密性に関する潜在的な要件がいくつか...

Ketian Cloud: 企業が顧客と直接対面できるコラボレーション3.0の時代が到来

(11月28日、北京)シスコとTCLの合弁会社シスコクラウドが北京で発表イベントを開催した。 Ket...

三大主流派がアプリシリーズに夢中:制御できないアプリドメイン名の歴史に注目

インターネットがますますオープンになるにつれ、APP は徐々に企業の WAP ウェブサイトに取って代...

独自のサーバーを購入するか、仮想マシンをレンタルするか、クラウド ホスティングを使用するか?

[51CTO.com クイック翻訳] ご存知のとおり、専用の物理サーバーを所有することの魅力は、ユー...

armorshark-24$年/KVM/512mメモリ/20gSSD/1Tトラフィック/Gポート/Win互換

【現時点での購入はお勧めしません! [さまざまな苦情や論争の中] Armorshark は、SSD ...

ウェブサイトのキーワードランキングを安定させる方法

現在、多くのウェブサイトのキーワードランキングは不安定です。不安定になる原因は、不安定なサーバー、過...

Docker-Compose を通じて Elasticsearch と Kibana を素早くデプロイする

1. 概要Docker Compose を使用して Elasticsearch と Kibana を...

crissic-512m kvm vps/2 コア/40g ハードドライブ/2T 月間トラフィック/月額支払い 2.5 ドル

Crissic は最近非常に強力で、驚きをもたらしています。KVM と openvz をベースにした...

クラウドコンピューティングの運命: 世界が 1 台のコンピューターに統合され、サーバーレス運用がサポートされる

「私たちは、世界中のクラウド コンピューティング リソースをコンピューターと同じくらい簡単に使えるよ...

国内ネットワークディスク共有機能は制限あり

インターネット動画プレーヤーQvodのサーバーがポルノコンテンツのために閉鎖された後、動画共有機能も...

Docker で Kafka サービスを使用するにはどうすればいいですか?メッセージサービステストの実践

背景とシステム紹介: Kafka は、Web サイト上の消費者のすべてのアクション ストリーム デー...