よくある質問・用語集

  • もっと調べる
  • どうやって使う?

全文検索とは

全文検索とは、文章の本文全体を含むすべての文字情報を対象とした検索方法である。全文検索は、フルテキストサーチ(Full Text Search)とも呼ばれる。一般の検索方法との違いとして、例えばファイルの検索を行う場合、Windowsのエクスプローラーでは、ファイル名やフォルダ名だけを検索対象としている。そのため、ファイルの中身に調べたいキーワードや文字列が入っているかについては検索対象にならない。一方全文検索では、ファイル名やフォルダ名に加え、ファイルやフォルダの中身の両方についての検索が行われる。全文検索の代表的な例としてGoogleなどの検索サイトから目的に合ったWebサイトや記事を検索したり、欲しい商品をECサイトで検索するといった検索方法があげられる。

全文検索は、1つずつファイルを開いて検索する方法に比べると手間はかからないが、ビジネスで利用するビッグデータのようなたくさんの情報がある場合、その中身を逐次的に調べるには膨大な時間がかかり、あまりに時間が長いと実用性がなくなってしまう。そのため全文検索では、業務を効率化するため、検索に必要な時間を減らす機構が必要となる。

全文検索システムの要件

全文検索のようにたくさんの情報の中から特定の情報を探すためには、多くのコンピュータリソースが必要となる。例えば、特定の文字列を逐次的に探す技術である「grep型」手法では、数Gbyteあるデータから数秒で結果を得ることは簡単ではない。全文検索システムでは検索を高速に行う際に、いくつかの機能が使われている。ここからは、全文検索で使われている機能について以下で2つ紹介する。

インデックス(見出し)

インデックスは、どこに、どのような情報があるのかという索引をあらかじめ辞書のように作成しておき、この索引を使って検索する方法である。情報が追加・削除・修正されたときに、インデックスを更新する方法と、定期的に情報を精査してインデックス全体を更新する方法がある。

形態素解析

形態素解析とは、文法と語彙のデータを基準として、一定のアルゴリズムにより文章を単語に分解する手法である。英文では単語と単語の間に空白を空けるため、単語の接辞や変化を調べるだけでよい。しかし日本語の文章は英文とは異なり、それぞれの単語が独立しておらず、1つの文章の中に切れ目なく入っている。そのため、日本語の文章を解析する場合は、文章をいくつかの文字列に分けて管理する必要がある。このように文字列を単語の最小の構成単位に分割することを「分かち書き」と呼ぶ。

一方で、そもそも構文を解析することは難しいという考え方もあり、この考え方に基づき、文章を一定の文字数ごとに機械的に区切った文字列を作り、それを単語の代用とする手法もある。このように、検索対象を単語単位ではなく文字単位に分解してインデックスを生成する方式を「N-gram」という。

「分かち書き」や「N-gram方式」といった形態素解析の機能がある事で、索引する文字列を抽出する精度が上がり、インデックスの作成が可能となる。

対応したデータベース

全文検索では一般的なリレーショナルデータベースとは異なり、それに対応したデータベースを参照する必要がある。対応したデータベースには、次のようなものが挙げられる。

  • Apache Lucese

    Apache Lucense(ルシーン)は、Javaで記述されたクラスライブラリである。

  • Apache Solr

    Apache Solrは、Apache Luceneのライブラリを使って開発された全文検索のシステムである。様々なキャッシュを使って、大量のデータでも高速に検索を行えるのが特徴である。Apache Solr自体はオープンソースソフトウェアであるが、これを利用して、いくつかのソフトウェアが製品化されている。

  • Elasticsearch

    Elasticsearchは、Apache Luceneのライブラリを使用して開発された全文検索のデータベースである。Elastic社が開発を行っており、2021年2月リリースの7.11.0以降、オープンソースソフトウェアではなくなっている。複数のElasticsearchを使って分散処理を行うことができ、スケーラビリティに優れているのが特徴である。また、文字列だけではなく数値データなども扱うことができる。そのため、ビッグデータ解析のような大量のデータを高速に検索する必要がある場合に使われる。

  • OpenSearch

    OpenSearchとは、高速検索が可能な全文検索・分析エンジンである。OpenSearch projectによって、Apache License 2.0のライセンスで公開されている。Elasticが開発したElasticsearch7.10.2をフォークして作成されており、Elasticsearchと同じように利用が可能である。OpenSearchは、検索速度や分析柔軟性に優れており、わかりやすく検索機能を利用できる。

  • リレーショナルデータベース

    MySQL、PostgreSQL、Oracleなどのリレーショナルデータベースにも全文検索の機能がある。ただし、スケーラビリティなどの点では課題が多く、データ量が多い場合には制約があり注意が必要である。LIKE検索よりも高速に検索できる手法と考えた方がよい。

検索の対象

全文検索はファイル名などの一部の情報の属性だけではなく、情報の内容全体を検索の対象とする。次のような検索対象で利用されることが多い。

  • ファイルサーバ

    ファイル名や作成日などの情報だけでなく、ファイルの中身を検索対象とする。たくさんのファイルが配置されているファイルサーバで利用される。

  • メールサーバ

    メールのサブジェクトや送信元、送信先などの情報だけでなく、メールの本文を検索の対象とする。

  • データベース

    データベース内のデータを検索の対象とする。

  • インターネット上のドキュメント

    インターネット上にある様々なドキュメントを検索の対象とする。代表的な例としてGoogleなどの検索サイトがあげられる。

対象となる情報形式

全文検索は、一般的にはテキストデータを対象とする。しかし、テキストの保存形式にも様々な方法があり、文字コードなどが問題となることもある。全文検索を行うためには、コンピュータ上に保存されているデータの形式や文字コードを認識して、検索可能なテキストデータを抽出する必要がある。そのため、すべての形式でサポートを実現するのは難しい。一般的には、次のような形式が対象になることが多い。

  • テキスト形式
  • PDF形式
  • Microsoft Officeの文書形式(Word、Excel、PowerPoint)
  • LibreOfficeの文書形式
  • JPEGなどの画像データ、MPEGなどの動画データに含まれる文字情報
  • HTML形式
  • XML形式

OSSのフルテキストリサーチ

ここからは、OSSでライセンスフリーで利用できる検索エンジンを解説していく。

Namazu

Namazuは、1990年代から2000年代にかけて使われていた日本語全文検索のシステムである。2009年Namazu 2.0.19にセキュリティ上の大きな問題が見つかり、2.0.20版がリリースされた。Namzuのプロジェクトは、その後2011年に2.0.21版をリリースしたが、それ以降は開発が途絶えている。

Fess

Fessは、ファイルサーバやWebサイトのデータを対象とした全文検索システムである。検索画面でキーワードを指定すると、関連した文書やページの一覧を検索サイトのように表示するシステムである。ユーザーによって、一部分のみ表示されるなど、検索対象を細かく設定することも可能である。データベースには、Elasticsearchを採用している。独自のクローラを備えていて、指定したサイトやサーバから定期的にWebページや文書などのデータを収集してインデックスに登録してくれるのが特徴である。デージーネットのホームページ内でも、ユーザー向けにFessを利用した検索窓を設置し、全文検索が行えるようになっている。

Graylog

Graylogも、Elasticsearchをベースに作られた全文検索システムである。ログ収集の仕組みであるsyslogをはじめとして、様々なプロトコルで情報を収集できるようになっている。Fessがクローラで自ら情報を取得するのに対して、Graylogは周囲から送られてくる情報をリアルタイムにインデックス化するのが特徴である。取得した情報は、時間やホストなどの属性データとテキストデータに分解してからElasticsearchに登録することができる。そのため、テキストだけでなく、数値情報も扱うことができる。また、こうした属性情報も活用して、データを高速に絞り込むことができる。さらに、データを解析し、グラフやランキングなどにして可視化表示することができる。また、ダッシュボードを作成できるのも特徴である。

SyLAS

SyLASは、デージーネットが開発したログ管理システムである。もともと、ログの保管データベースとしてMySQLの全文検索機能を使っていたが、Elasticsearchにも対応した。ログ管理のシステムとしては、Graylogに比べて極めてシンプルであるが、これで十分な場合も多い。データの収集は、Linuxで標準的に使われているrsyslogの機能を使って行う。SyLASで収集したデータは、Webインタフェースから解析することができる。Linuxの知識がなくても手軽に日時と文字列からログを検索できる、シンプルな機能を提供している。

【カテゴリ】:ビッグデータ  情報共有  

  • もっと調べる
  • どうやって使う?

【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー

日程: 11月22日(金)Webセミナー「BigBlueButton」を使用します。
内容: OSSを導入したいけど、どこから手をつければいいかわからない方必見!
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

全文検索に関連するページ(事例など)

全文検索とは先頭へ