ディレクトリ型検索エンジンdtnの各カテゴリでは、申請されたサイト順にサイトを並べて表示していただけでしたが、今後は人気サイト順に表示をさせるようにプログラムを改修してみました。かつてのYahooカテゴリと同じようなイメージです。

皆さんがYahooカテゴリにサイト登録を躍起になってやっていた頃であれば、登録されたYahooカテゴリの上位にサイトが表示されたときのSEO効果はもの凄いものがありましたが、今となってはディレクトリ自体があまり評価をされておりませんので、カテゴリページの上の方にサイトが表示されたからといっても、SEO的な効果がそこまであるとはいいません。

とはいえ、カテゴリページの上位にあればあるほどクリックされる可能性は高いと思いますので、人気サイトをなるべく良い場所に並べてあげたいという思いはございます。

この記事では、そのdtnディレクトリのカテゴリ登録サイトの表示順変更の詳細や、カテゴリテーブルとトランテーブルを使って、サブクエリをする方法などについてご紹介をしたいと思います。

カテゴリのサイト表示順を変更

ディレクトリ型検索エンジンdtnのディレクトリには900近いカテゴリが存在しています。登録サイトさんは8000サイト近くあるので、一つのカテゴリには8サイトくらいはある計算になります。

これまでカテゴリの更新処理を走らせる際には、単にカテゴリに登録されたサイトを申請ID順に並べて抽出していただけでしたが、せっかくクリックやイイネランキング用のデータを収集しているので、このデータと結合しつつ抽出してみるようにしました。

サイトを人気順に並び替え

サービス終了したYahoo!カテゴリも、カテゴリに登録されたサイトを人気順に表示しておりましたが、あれと同じようなイメージになります。昔からやろうやろうと思っていたものの、クエリを書くのが億劫でやらずじまいでおりましたが、やっと実現をすることができました。

上位表示のSEO効果

昔だったら、登録されたYahooカテゴリの上位にリンクが位置をすればするほど、被リンクとしての価値も増すイメージがありましたが、昨今ではもうSEO的な意味はほとんどないかもしれません。

とはいえ、何事も下がるよりは上がる方が気分がよいとは思いますので、登録サイトをお持ちの方はぜひカテゴリ内の順位もたまには確認してみて下さい。

人気順に抽出するクエリ

書き直したクエリでは、カテゴリ登録サイトを抽出する際に、リンクのクリックデータ集計テーブル、イイネ評価の集計テーブル、ほかに対して、複数JOINをかけるようにしてみました。

複数のテーブルにJOINすることもあり、実行速度が若干気にはなりましたが、日次バッチで深夜に1回走るだけですので、そのあたりは目をつぶることにしておきました。

参考までに、テーブルとクエリはこのようなイメージになります。

idURLサイト名サイト説明
1https://test.co.jp/テスト1テストのサイト
2https://test2.co.jp/テスト2テスト2のサイト
3https://test3.co.jp/テスト3テスト3のサイト
登録リンクテーブル
idタイムスタンプ
22020-11-01 23:44:38
12020-11-01 23:05:40
32020-10-29 07:51:31
12020-10-27 18:34:49
クリックカウントテーブル
SELECT
	link.id AS ID
	COUNT(DISTINCT outaccess.out_id)AS SCORE
FROM
	link
		LEFT JOIN
			outaccess
		ON
			link.id = outaccess.out_id
WHERE
	link.category_code = "******"
GROUP BY
	link.id
ORDER BY
	SCORE DESC

クエリ改修後

上のサンプルクエリではクリックアクセスしかJOINしていませんが、実際にはクリックアクセスだけでなく、イイネ評価や他も含めて複数のJOINをかけつつ抽出し、HTML更新まで行っています。トータルで数分は処理時間がかかりますが、今のところ毎晩問題なく走ってくれているようです。

ディレクトリ型検索エンジンdtnについては、他にも細かい機能修正を今回かけましたが、このご時世に、ディレクトリ型検索エンジンの改修について話題にしても興味を持つ方はほとんどいないでしょうから、このあたりで終わりにしておきます。

未だ登録申請待ちサイトが6,000サイト以上あり、今でも日に数件の申請をいただいておりますので、少しでも早く0件にできるよう頑張りたいと思います。