jekyllのblogをelasticsearchで検索する

ふと、blog内検索できるようにしようかなと思い、elasticsearchを触ってみました。 ブログ上部の検索フォームから検索できるようになりました。たぶん自分くらいしか使わないけど。 一応その記録を残しておきます。長いです。 はじめに 最初に簡単に説明すると、Elasticsearchというのは、Apache solrみたいな検索エンジンで、複数台でクラスタ組んだりできます。 Apache Luenceがベースなのはsolrと一緒で、RESTなAPIから操作できます。 最近ver.1.0がリリースされ、情報をよく見るようになってきました。 kuromojiという形態素解析ライブラリと合わせて使うと、日本語の全文検索ができるようになります。 まだ中身をよく分かってないので、正しくない部分があるかもしれません。 そしてJekyllはMarkdownで書いた記事を、htmlに変換するやつで、github pageにも使われていてrubyで書かれていてプラグインもrubyで書けます。 今までは手元でこの変換(=jekyll の build) をやってからアップロードしてnginxでhostする、ということをやってました。 システムの構成を考える まずelasticsearchはサーバ上で動かします。ngnixで今までどおりサーバ上で静的なファイルをホストします。 そのような構成でelasticsearchを使った検索を実現するにあたり以下のような課題があります どうやってelasticsearchに記事のデータを入れるか 新しい記事を追加するだけでなく、記事の一部を修正したり、過去の記事を消すこともある どうやってelasticsearchにクエリを投げるか できればnode.jsなど他のサーバは立ち上げたくない サーバの外からelasticsearchにクエリを投げる場合、searchはいいけどデータの追加/削除などを外からできる状態にしたくない それぞれどうやったかを一言で言うと、 1つ目については、…

Goコードラボに参加した

先日、Googleが開催したGoコードラボに参加しました。 Go 言語コードラボを開催します - Google Japan Developer Relations Blog Goの開発メンバーのAndrew Gerrandさんに教えてもらいながら、参加者同士がpeer-to-peerでやりとりするプログラムを書いていく、という内容。 スライドは、 Whispering Gophers にあって、whispering-gophers - Whispering Gophers - Google Project Hostingからコードをcloneすると、同じことを学ぶことができます。 当日は、少し説明を聞いて、実際にコードを書いて動かしてみて、その後にその場で実装する様子を見ておさらいする、ということを繰り返して、skeletonを埋めていくと少しずつやりとりできるようになるので、それぞれをちゃんと理解しながら進められて、とてもよく考えられているなーと思いました。 最終的には、みんながそれぞれ相互にメッセージを送りあえるので、 Twitter / enneff: #gocodelab see what happens ... のような感じになってました。 (Jekyllに写真付きtweetをうまく埋め込めなかった。。) 英語力とGo力に不安あったけど、参加してみてよかったです。 食事までいただいて、いたれりつくせりでした。 Topの写真は、…

[Mac]lionでJAVA_HOMEを設定(jdkのインストールも)

LionではJDKが予めインストールされている?かもしれません。 ターミナルで $ java -version が出来れば入っていると思います。 その場合、~/.bashrcなどに export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home を追記して再読み込みすれば、JAVA_HOMEが反映されます。 $ source ~/.bashrc javaがなければ、 http://support.apple.com/downloads/#Java からダウンロードしてインストールできます。…

[Mac]JAVA_HOME/include以下にjni.hがないというエラーを解決

Mac OSX (lion)で、とあるconfigureスクリプトを実行中に cannot find jni.h in /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include. というエラーが出ました。 JAVA_HOMEの設定が設定されてなかったら先にやります. 参考 Mac lionでJAVA_HOMEを設定 と jdkのインストール - tjun memo そして、 $ sudo ln -s /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers…

rubyで短縮URLの展開

※2012/03/27 追記 この記事の方法は今は使えなくなってるかもしれません。 その場合は、 Rubyで短縮URLを展開 | ひげろぐ を見てみてください。 rubyで「bit.ly/**」などの短縮URLを展開したいときは、hugeurlが使えます。 インストール gem install hugeurl 使い方 require 'rubygems' require 'hugeurl' puts URI.parse("http://bit.ly/iZhgER").to_huge これで展開されたURLが取得できます。簡単で便利です。 追記 短時間にたくさん使うと、エラーが出ることがあります。 そういうときは RubyでURL短縮展開のコードがきもいです… | cod.note も使えます。 参考にしたサイト 橋本商会 » hugeurlというgemを作った shokai/hugeurl -…