【Wordpress】類似ページ(関連記事)を表示するプラグイン開発

Wordpressの記事を表示したときに自動的に似た内容の記事を表示するプラグインを開発したときのメモ。

環境:CentOS 5.4, Lampp 1.7.1, wordpress 2.8.6

処理手順としては

  1. 投稿やコメントを保存したタイミングで記事内の名詞を抽出してMySQLに保存(辞書の作成)。名詞(単語)の抽出はオープンソースのMecabを使う。インストールなどの詳細は前の記事を参考に。
  2. 記事を表示したときに、その記事の特徴を表す名詞リストをMySQLから取得
  3. MySQLの全文検索機能を使って、名詞リストと類似する名詞リストを取得(表示しようとしている記事とコメントは除外)。

こんな感じ。

MySQLの全文検索が関連する順に並び替えてくれるので便利。

MySQLのテーブルの構造

CREATE TABLE `wp_1_wsa_dictionary`
  `dictionary_id`     BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY
, `post_id`           BIGINT(20)
, `comment_id`        BIGINT(20)
, `word_list`         TEXT
, `updated`           DATETIME
,  FULLTEXT (word_list)
)

実際のデータ例。日本語の名詞だけ抽出。「読み」も保存しておくことで、精度の高い類似検索ができる(はず)。

image

ただMySQLの全文検索では、検索対象とする単語長がデフォルトで4になっているのでmy.confを編集しておく(要再起動)。

[mysqld]
  ft_min_word_len=1

 

ちなみに、こんなことをしなくても、MySQL + Senna + Mecab = Tritonn というのが既にあるので、そちらを利用するのも手。

 

<関連記事>

PHPから日本語形態素解析「MeCab」を使うためにコンパイル
サイト内の類似ページ(関連記事)を取得するための日本語形態素解析