Middleman Blogの類似記事をGroongaを使ってリストアップするRubyGemを作った
この日記はGroonga Advent Calendar 2015の21日目の記事です。今日は25日です。大幅に遅れてしまって、本当に申し訳ありません。
Middlemanでブログの類似記事一覧を作る拡張にMiddleman-Blog-Similarがある。類似判定のアルゴリズムを選べたりといい所もあるのだがこれは今のMiddleman v4に対応していない。それにGroonga Advent CalendarのネタとしてもGroongaが使いたかったので、Groongaの類似文書検索機能を使って同様のことをやってみた。
https://github.com/KitaitiMakoto/middleman-blog-similar-groonga
使うにはmiddleman-blog-similar-groonga
をインストールし、config.rb
で
activate :blog_similar_groonga
と追記する。
拡張を有効化するとブログ記事向けのレイアウトでsimilar_articles
というヘルパーが使えるようになる。ここでイテレートされるオブジェクトには
key.key
(パス)title
path
body
(タグを取り除いたもの)
の属性があって、わざわざ他記事のBlogArticles
オブジェクトまで辿らなくても済むようになっている。類似記事のタイトルを表示しつつリンクにしたいだけなら充分だろう。
<section>
<h2>類似記事</h2>
<ul>
<% similar_articles.each do |article| %>
<li><%= link_to article.title, article.key.key %></li>
<% end %>
</ul>
</section>
として使うことができる。
今は本文での類似しか見ていないが、タイトルやタグを使ったほうが人間の感覚に合うだろうから、改善を続けていきたい。
名前は似ているがMiddleman-Blog-Similarとは全く互換性が無いので注意すること。