nakochi’s log

freeeのエンジニア。たまにモデル。

オープンソース全文検索サーバー FessとElasticsearch。

こんにちは、nakochiです。

初めてのUIデザインの発売イベントでU-25は無料で参加できるイベントがあったので応募してみました。

UI/UXデザイナーではないですが、関わり方について質問したいなと思っています。楽しみ。

当選する気満々でgoogle calenderに予定も入れてあります。削除する悲しみがないことを願うのみです。

peaks.cc

fessが良さそうだったのでメモとElasticsearchとの違いについてもメモ。

fess.codelibs.org

Fess は簡単に導入できる、Java ベースのオープンソース全文検索サーバーです。 Fess の検索エンジン部分には Elasticsearch を利用しています。 Elasticsearch は、Lucene ベースのスケーラブルで柔軟な設計の高機能な検索エンジンです。 一方で、 Elasticsearch で全文検索システムを構築しようとする場合、クローラ部分などの様々な機能を自分で実装する必要性があります。 Fess ではクローラ部分に Fess Crawler を利用して、ウェブやファイルシステム上の様々な種類のドキュメントを収集して検索対象とすることができます。

Elasticsearch は Elastic 社が開発しているオープンソース全文検索エンジンです。大量のドキュメントから目的の単語を含むドキュメントを高速に抽出することができます。Elasticsearch では RESTful インターフェースを使って操作しますが、「Elasticsearch SQL」を使って SQL 文でクエリを記述することもできます。

Lucene は、Apache Software Foundation から入手できる、極めてスケーラブルなオープンソースのテキスト検索エンジン・ライブラリーです。Lucene は商用アプリケーションでも、オープンソース・アプリケーションでも使用することができます。Lucene の強力な API は、主にテキストの索引付けと検索に重点を置いています。この API を使って、さまざまなアプリケーション (E メール・クライアント、メーリング・リスト、Web 検索、データベース検索、等々) の検索機能を作成することができます。事実、Wikipedia、TheServerSide、jGuru、そして LinkedIn などの Web サイトでは Lucene が使われています。

Elasticsearch は Elastic 社から提供される、Lucene をベースとしたエンタープライズ向け検索サーバーです。 特徴としては、リアルタイム検索、検索結果の強調表示や集計機能などをサポートしていることが上げられます。 また、検索対象とすることができるドキュメント数は、Elasticsearch サーバーの構成次第で、数億ドキュメントにもなり、大規模サイトへもスケールアウトできる検索サーバーです。 利用実績も日本でも数多くあり、注目されている検索エンジンの一つであると言えます。

Fess では、検索エンジン部分に Elasticsearch を採用しています。 Fess の配布物には Elasticsearch を組み込んだ形で配布していますが、 Fess サーバーとは別なサーバーへ切り出して利用することも可能です。 また、 Fess と Elasticsearch でそれぞれで冗長構成を組むことができ、高い拡張性を活かすことができる設計になっています。

Fess は内部の検索エンジンとして Elasticsearch を利用しています。 ElasticsearchもJSONによるAPIを提供していますが Fess のAPIは異なるものです。 ElasticsearchのAPIでなく、 Fess のAPIを利用するメリットは、 Fess のAPIを利用することで検索ログの管理や閲覧権限の制御など、様々な Fess 固有の機能を利用できることが挙げられます。 ドキュメントクロールの仕組みをゼロから独自に開発したい場合はElasticsearchを利用するのが良いと思いますが、簡単に検索機能を追加したいということであれば Fess を利用して多くの開発コストを削減できます。

fessはすごくtutorialがしっかりしている印象を受けたので、今週末はfessについて勉強しようかなと思っている。

タスクが山積みになってきている感じがあるけど、頑張りたい。

新卒研修の一環で2週間で完了させないといけないので自分の無知をすごく痛感している。

特に、良くも悪くも自分自身の興味のある方向に突っ走ってしまう傾向があるのでそれについても考えていきたいなあと思っています。