Edited at

OSSデータベース調査 サーチエンジン編


はじめに

OSS データベースを調査の際に、DB-Engines Ranking のトップ20にサーチエンジンが3つもランクインしています。

私が以前、REGZA や VARDIA の 全文検索エンジンを開発していたことと、近年、サーチエンジンの注目度は高いことから動向が気になっていました。

そこで、今回は各種 OSS サーチエンジンについてライセンス、サポート、導入実績、コミュニティの視点からまとめてみました。


調査対象となる OSS サーチエンジンについて

OSS サーチエンジンである Elasticsearch、Solr、Sphinx について調査してみました。

RDBMS、NoSQLデータベースについては、OSSデータベース調査 RDBMS編OSSデータベース調査 NoSQLデータベース編をご覧下さい。


Elasticsearch

Elasticsearchは、オープソースの高スケーラブルな全文検索および分析エンジンです。大容量のデータをすばやく、ほぼリアルタイムで保存、検索、分析できます。通常、検索の機能と要件が複雑なアプリケーションを強化する基礎となるエンジン/技術として使用されます。構造型、非構造型、地理情報、メトリックなど、多様なタイプの検索に対応しています。

全文検索のための有限状態トランスデューサを使用した転置インデックスや、数値データや地理データを格納するためのBKDツリー、分析用のカラムストアが実装されています。

基本情報

項目
内容

ホームページ
https://www.elastic.co/products/elasticsearch

最新バージョン
Version: 6.5.4 (2018-12-19)

開発言語
Java

動作環境
Java 8以降が必要。Oracle JDKバージョン1.8.0_131以上のバージョンの使用を推奨しています。
参照 : Set up Elasticsearch
CPU:マルチコアのプロセッサを推進
メモリ:64GB以上を推奨。32GB及び16GBでも動作可
参照 : Hardware
OS:CentOS/RHEL 6/7, Oracle Enterprise 6/7, Ubuntu 14/16/18, SLES12, openSUSE, Debian 8/9, Windows Server 2012/2016
参照 : Support Matrix

ライセンス
Apache License Version 2.0
https://github.com/elastic/elasticsearch

特徴
HTTP WebインターフェイスとスキーマフリーのJSONドキュメントを備えており、さまざまなユースケースに対応できる分散型RESTful検索が可能です。スケーラビリティに優れたマルチテナント対応のフルテキスト検索エンジン機能を提供します。
Elasticsearchは、特に、検索速度や分析柔軟性に優れています。強力な検索機能をシンプルに利用でき、データ蓄積/分析/可視化環境を容易に構築できます。
高度なリアルタイム分析、大規模分散、高可用性、マルチテナンシー、全文検索、ドキュメント指向、スキーマフリー、RESTfulAPI、データ保護機能を特徴とします。
参照 : オープンソースの検索エンジン/Elasticsearchとは

適している利用シーン
大容量のデータをほぼリアルタイムで保存、検索、分析が必要なシステム
例えば、顧客が販売製品を検索できるオンラインWebストア、ログデータやトランザクションデータの解析。
参照 : Elasticsearchリファレンス [5.4] » 始めてみよう

適していない利用シーン
トランザクションを必要とするようなシステム
参照 : Elasticsearchでアプリを作ってみた。~メリットとデメリットを考える

開発情報

項目
内容

開発主体
Elastic

開発体制
Contributor 943名。Contributor License Agreementを締結する必要有ります。

参加企業
Elastic

リポジトリ
https://github.com/elastic/elasticsearch

開発コミュニティ
機能追加リクエストやバグレポートはGitHubのIssuesで話し合われます。
https://github.com/elastic/elasticsearch/issues

開発コミュニティ活動状況
月間 約240件のソースコード・コミット
https://github.com/elastic/elasticsearch/commits/master
月間issues更新 約200件
https://github.com/elastic/elasticsearch/issues

サポート情報

項目
内容

コミュニティサポート

各種フォーラムメーリングリストでサポート

コミュニティ活動状況
週間 240件のTopic投稿有り
https://discuss.elastic.co/c/elasticsearch

サポート企業
Elastic

サポートメニュー/費用
Elasticがサブスクリプションライセンスでサポートされている。価格は問い合わせ。
参照 : サブスプリクション
また国内のパートナー企業が導入、技術サポート
参照 : 国内パートナー企業一覧

歴史

項目
内容

開発開始時期
2010年 Shay Banonが開発開始

開発の経緯
2010年 Shay banonが最初のElasticsearchを開発しOSS化。「ユーザが、もっと簡単に、本当に欲しいものを手に入れられるように」をコンセプトに開発
2012年 Elastic社を設立。現在、32ヶ国に渡る開発者と、100ヶ国を超えるコミュニティのメンバーがいます。
参照 : Open Source Search & Analytics Elasticsearch

最近のメジャーリリース履歴
2017-11-15 Version 6.0.0 : Cross Cluster Searchなど
2017-12-01 Version 6.1.0 : Shrink Index API、composite aggregationなど
2018/01/08 Version 6.2.0 : SAMLサポート、Rank Evaluation APIなど
2018-06-13 Version 6.3.0 : X-Pack のデフォルト化、SQL 対応、Rollup、Java10 対応
2018-08-23 Version 6.4.0 : Kerberos 認証、FIPS 140-2 対応
2018-11-14 Version 6.5.0 : クロス・クラスター・レプリケーション、ODBC ドライバ、Java 11 対応
参照 : Release Notes

リリース頻度
年間 約35回 リリース
https://github.com/elastic/elasticsearch/releases

適用状況

項目
内容

適用システム
日経電子版の記事検索、ソフトバンク システム基盤本部のIT運用管理など多数
参照 : 導入事例
AWS の Amazon Elasticsearch Service で利用
参照 : Amazon Elasticsearch Service の機能

適用数


OEMパートナーが多数
参照 : OEM, MSP, and CSP Partners

適用企業
ソフトバンク、富士通、星野リゾート、マイクロソフト、日本経済新聞社、Lineなど
参照 : 導入事例


Slor

Solrは、Apache Luceneで非常に高速な、人気のある、オープンソース・エンタプライズ企探索プラットフォームです。Solrは、高信頼性、スケーラブル、フォルトトレラント、分散インデックスの提供、レプリケーション、ロードバランス・クエリ、自動フェイルオーバとリカバリ、集中化された設定などの特徴があります。

基本情報

項目
内容

ホームページ
http://lucene.apache.org/solr/

最新バージョン
Version: 7.6.0 (2018-12-14)

開発言語
Java
参照 : The Apache Sofrware Foundation

動作環境
Java 8 以降が必要。JRE バージョン1.8以上のバージョンの使用を推奨しています。
OS : Linux, MacOS/OS X, Microsoft Windows
参照 : Solr System Requirements
CPU:マルチコアのプロセッサを推進
メモリ:2 - 16GB以上で動作可
ストレージ : 高速 HDD ( 10,000 RPM / SEC 以上 )または SSD
参照 : Solr: a High-level Overview for Sysadmins

ライセンス
Apache License Version 2.0
https://github.com/apache/lucene-solr/blob/master/solr/LICENSE.txt

特徴
高度な全文検索能力、高負荷量の最適化、XML, JSON, HTTPのサポート、、総合的な管理者インタフェース、イージモニタリング、高スケーラブルとフォルトトレラント、イージコンフィグレーションでフレキシブルな適用、リアルタイムに近いインデクシング、拡張プラグイン・アーキテクチャを特徴とする。
参照 : Solr Features

適している利用シーン
インターネットのサイト検索システムをはじめ、企業内でのファイルサーバや多様なデータの検索や知識共有システム、図書館の検索システム、SaaS、SNS、広告配信システム、政府系機関システムなど
Apache Solr 事例紹介/サポートバージョン
部門の情報共有のためのスモールスタートから大規模なエンタープライズサーチやコンシューマ向け検索サービスにも対応します。
参照 : Solr of オープンソースソフトウェアの悩みを解決する

適していない利用シーン
JOIN、GROUP BY などのSQLのような複雑な検索ができない。ロールバックなどのトランザクション処理ができない。
solrを使う前に知っておくべき事

開発情報

項目
内容

開発主体
Apache Software Foundation

開発体制
Slor は、上位プロジェクトである Apache Lucene Committee で開発されている。
PMC ( Project Management Committee ) Chair 1名 ( Cassandra Targett 氏 )、PMC Roster 50名, Committers 75名、Contoributors 273名
参照 : Apache Lucene CommitteeHow to Contribute to Solr

参加企業
Apache Software Foundation

リポジトリ
https://git-wip-us.apache.org/repos/asf/lucene-solr.git

開発コミュニティ

開発者メーリングリストCommit 用メーリングリストを提供

開発コミュニティ活動状況
月間 約180件のソースコード・コミット
https://gitbox.apache.org/repos/asf?p=lucene-solr.git;a=shortlog

サポート情報

項目
内容

コミュニティサポート

ユーザ用のメーリングリスト一般的なディスカッション用メーリングリストを提供

コミュニティ活動状況
メーリングリストに月間約 300件の投稿

サポート企業
多くの企業がサポートやコンサルタントを行っているようですが、国内では atilika、ロンウイットがサポート
参照 : Support for Solr

サポートメニュー/費用
例:ロンウイット の Solr サブスクリプション・パッケージ
バグフィックスパッチのご提供や回避策の提示、最適な解決策の提供
参照 : Solr サブスクリプション・パッケージ
サブスプリクション以外にもコンサルティングサービスやトレーニングもあります。
参照 : コンサルティングサービストレーニング

歴史

項目
内容

開発開始時期
2004年 CNET Networks が開発開始

開発の経緯
2004年 CNET Networks 社内プロジェクトで Yonik Seeley 氏が Web サイトの検索機能を開発
2006-01 CNET Networks は、Apache Software Foundation の Lucene プロジェクトにソースコードを OSS として寄贈
2008-09 分散検索機能を含んだ機能と性能を強化して、Solr 1.3 をリリース
2012-10 Solr Cloud 機能を含んだ Solr 4.0 をリリース
参照 : Intorduction Apache Solr

最近のメジャーリリース履歴
2015-04 5.0 日付範囲インデクシングのためDateRangeField追加、TransactionLog
2016-04 6.0 パラレルSQL、JDBCドライバ
2017-09 7.0 ReplicaType の追加、Auto-scaling、API が XML から JSON、Facetの改善
https://github.com/apache/lucene-solr/releases

リリース頻度
年間 9回のリリース

適用状況

項目
内容

適用システム
日本経済新聞社 : 英文メディアサイト Nikkei Asian Review
参照 : WEBSAS : 実績紹介
AWS の Amazon CloudSearch で使用されています。
参照 : Amazon CloudSearch よくある質問

適用数
WEBサイトを中心に多くの企業で使用されています。
参照 : PubulicServvers

適用企業
Goldman Sachs, Disney, Apple, CISCO, Netflix など
参照 : PubulicServvers


Sphinx

Sphinx は、パフィーマンス、関連、統合を全てシンプルに設計したオープンソース・フルテキスト検索サーバです。

Pythonドキュメント・ジェネレータのSphinxとは別モノなので注意が必要です。

基本情報

項目
内容

ホームページ
http://sphinxsearch.com

最新バージョン
Version: 3.1.1 (2018-10-17)

開発言語
C++
参照 : About Sphinx

動作環境
OS : 以下の OS をサポート


  • Linux 2.4.x, 2.6.x, 3.x (many various distributions)

  • Windows 2000, XP, 7, 8

  • FreeBSD 4.x, 5.x, 6.x, 7.x, 8.x

  • NetBSD 1.6, 3.0

  • Solaris 9, 11

  • Mac OS X

CPU : x86, x86_64, amd64, SPARC64, and ARM
参照 : Sphinx 2.3.2-beta reference manual

ライセンス
Sphinx 2系は製品ライセンスと GPL version 2 のデュアルライセンスです。
Sphinx 3系は現在、製品ライセンスのみです。
http://sphinxsearch.com/services/embedding/

特徴
バッチとリアルタイム・フルテキスト・インデックス、非テキスト属性をサポート、SQLデータベース・インデクシング(MySQL, PostgreSQL, Oracle, Microsoft SQL Server, SQLite, Drizzle などと連携)、非SQLストレージインデクシング、アプリケーションとの統合が簡単、複雑なフルテキスト検索、SQLが利用可能、分散検索などの特徴があります。
参照 : About Sphinx

適している利用シーン
動的な高速フルテキスト検索を必要とするシステムなど
Sphinx Case Studies

適していない利用シーン
情報がありませんでしたが、
トランザクションを必要とするようなシステムには向いていないと思われます。

開発情報

項目
内容

開発主体
Sphinx Technologies

開発体制
GitHub の Contributors は 8名
参照 : Contributors : spinx search

参加企業
Sphinx Technologies
Sponsored and Custom development で参加企業を募集しています。

リポジトリ

https://github.com/sphinxsearch/sphinx/
ただし、Sphinx 3.0 以上はソースコードを公開していない。

開発コミュニティ

ForumBugTrackerを提供

開発コミュニティ活動状況
3年間で 28 件の Pull Requests
Pull Requests : spinx search

サポート情報

項目
内容

コミュニティサポート

Forum, Wiki, BugTrackerを提供

コミュニティ活動状況
Forumに月間約 20件の投稿

サポート企業
Sphinx Technologies

サポートメニュー/費用
サポートパッケージが用意されている。費用については要問い合わせ。
参照 : Sphinx Enterprise Support Package Matrix

歴史

項目
内容

開発開始時期
2001年 Andrew Aksyonoff が開発開始

開発の経緯
2001年 Andrew Aksyonoff が既存データベースのフルテキスト検索の問題点(検索品質、検索速度、インデクシング時のCPU, ディスク条件)を解決するために、Sphinxの開発を開始した。
参照 : Sphinx Hisstory

最近のメジャーリリース履歴
2016-09 2.3.2 mmapを使用した検索、デーモン対応とインデクシング処理スレッド分離、HTTPプロトコル・インタフェース
https://github.com/sphinxsearch/sphinx/releases

リリース頻度
年間 1回ぐらいのリリース

適用状況

項目
内容

適用システム
レンタルサービス、ビッグデータ・ログ解析など
参照 : Sphinx Case Studies

適用数
WEBサイトを中心に多くの企業で使用されています。
参照 : Powered by Sphinx

適用企業
Infegy, Boardreader, craigslist など
参照 : Powered by Sphinx


最後に

今回調査対象とした OSS サーチエンジンは機能的に大きな差がないように見えます。Elasticsearch、Solr は、既に多くの導入実績がありコミュニティの活動も活発なことから、導入対象としての選択肢としては、十分に対象となると考えられます。

Sphinx はライセンスがデュアルライセンスとなっていて、ライセンスによって機能や性能が異なりますので、導⼊する際にはライセンス条項を確認する必要があります。また、Sphinx は国内のサポート企業がないので注意が必要です。

もし、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。