lunr.jsはJavaScript製のオープンソース・ソフトウェア(MIT License)です。

Webサイトを運営していて、煩雑な仕組みになりがちながらも実装を考えなければならないのが全文検索エンジンです。もし作ろうとしているのがWebアプリケーションであれば、いっそのことクライアントサイドで提供してみるのはいかがでしょう。lunr.jsを使えば手軽に実現できます。

[![](http://images.moongift.jp/2013/05/Screenshot 2013-05-20 11.32.17_thumb.1369051049.png)](http://images.moongift.jp/2013/05/Screenshot 2013-05-20 11.32.17.1369051049.png)
デモアプリケーションです。左上に検索ボックスがあるのが分かるかと思います。

[![](http://images.moongift.jp/2013/05/Screenshot 2013-05-20 11.32.51_thumb.1369051054.png)](http://images.moongift.jp/2013/05/Screenshot 2013-05-20 11.32.51.1369051054.png)
検索はインクリメンタルに行われます。ただし全文と言ってもタグとして指定された文字だけに限定されるようです。

インデックスの作り方です。まずindexとしてフィールドを作り、その後addメソッドを使ってオブジェクトを追加していきます。

lunr.jsではテキスト処理部分を別で設ける事ができますので非英語圏では別途分かち書きを行ってインデックス化できるようになっています。またあいまい検索に対応しており、単語が完全に一致していない場合でも結果を出せるようになっています。

もう一つ面白い機能としてストップワードがあります。これはitなどの一般用語に対して設定する事で不用意にインデックスを大きくしたりするのを防止できるようになっています。

MOONGIFTはこう見る

lunr.jsは決して高機能な検索エンジンという訳ではありませんが、Webブラウザのクライアントサイドで検索を行うのには十分な機能を備えています。全文検索なので深く考えずに使えるのも利点です。日本語であればJavaScriptベースの分かち書きエンジンを組み合わせて使う形になるでしょう。

クライアントサイドでの検索エンジンのメリットは、Webアプリケーションにおけるオフライン化であったり、インクリメンタルで高速なフィルタリングに用いられることです。サーバサイドほど融通はききませんが覚えておいて損はないでしょう。

lunr.js - A bit like Solr, but much smaller and not as bright

lunrjs.com/example/

olivernn/lunr.js · GitHub