よくある質問・用語集

サーバ構築のデージーネットTOP > OSS情報 > よくある質問・用語集 > 用語集 > 全文検索とは

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

全文検索とは

全文検索とは、文書内のすべての情報を対象とした検索方法である。フルテキストサーチ(Full Text Search)とも呼ばれる。例えば、ファイルの検索の場合、Windowsのエクスプローラではファイル名やフォルダ名だけを検索対象にしている。全文検索では、ファイルの中身についても検索が行われる。たくさんの情報がある場合に、その中身を逐次的に調べるには膨大な時間がかかってしまう。あまりに時間が長いと実用性がないため、検索に必要な時間を減らす機構が必要となる。

全文検索システムの要件

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

インデックス

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

形態素解析

形態素解析とは、文法と語彙のデータを基準として、文章を単語に分解する手法である。インデックスを作成するためには、文書の構文を解析する必要がある。とくに日本語の場合には、単語が独立しておらず、一つの文章の中に切れ目なく入っている。そのため、文章をいくつかの文字列に分けて管理しないと意味をなさない。このような分割処理を「分かち書き」と呼ぶ。

一方で、そもそも構文を解析することは難しいという考え方もある。このような考え方に立って、文章を一定の文字数ごとに機械的に区切った文字列を作り、それを単語の代用とする手法もある。これを「N-gram」という。

保存先データベース

全文検索を実現するには、一般的なリレーショナルデータベースとは異なる機能が必要となる。そのため、全文検索に対応したデータベースを利用する必要がある。

全文検索に対応したデータベース

全文検索に対応したデータベースとしては、次のようなものが使われる。

  • Apache Lucese
    Apache Lucense(ルシーン)は、Javaで記述された全文検索のクラスライブラリである。
  • Apache Solr
    Apache Solrは、Apache Luceneのライブラリを使って開発された全文検索のシステムである。様々なキャッシュを使って、大量のデータでも高速に検索を行えるのが特徴である。Apache Solr自体はオープンソースソフトウェアであるが、これを利用して、いくつかのソフトウェアが製品化されている。
  • ElasticSearch
    ElasticSearchは、Apache Luceneのライブラリを使って開発された全文検索のデータベースである。Elastic社が開発を行っており、オープンソース版と製品版の両方が提供されている。複数のElasticSearchを使って分散処理を行うことができ、スケーラビリティに優れているのが特徴である。また、文字列だけではなく数値データなども扱うことができる。そのため、大量の文書の全文検索やビックデータ解析などのように、大量のデータを高速に検索する必要がある場合に使われる。
  • リレーショナルデータベース
    MySQL 、PostgreSQL、Oracleなどのリレーショナルデータベースにも全文検索の機能がある。ただし、スケーラビリティなどの点では課題が多く、データ量が多い場合には制約がある。LIKE検索よりも高速に検索できる手法と考えた方がよい。

全文検索の対象

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

  • ファイルサーバ
    ファイル名や作成日などの情報だけでなく、ファイルの中身を検索対象とする。たくさんのファイルが配置されているファイルサーバで利用される。
  • メールサーバ
    メールのサブジェクトや送信元、送信先などの情報だけでなく、メールの本文を検索の対象とする。
  • データベース
    データベース内のデータを検索の対象とする。
  • インターネット上のドキュメント
    インターネット上にある様々なドキュメントを検索の対象とする。Googleなどの検索サイトは、まさに全文検索の技術を使って作成されている。

全文検索と情報の形式

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

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

OSSの全文検索システム

  • Namazu
    Namazuは、1990年代から2000年代にかけて使われていた日本語全文検索のシステムである。2009年Namazu 2.0.19にセキュリティ上の大きな問題が見つかり、2.0.20版がリリースされた。Namzuのプロジェクトは、その後2011年に2.0.21版をリリースしたが、それ以降は開発が途絶えている。
  • Fess
    Fessは、ファイルサーバやWebサイトのデータを対象とした全文検索システムである。検索画面でキーワードを指定すると、関連した文書やページの一覧を検索サイトのように表示するシステムである。データベースには、ElasticSearchを採用している。独自のクローラを備えていて、指定したサイトやサーバから定期的にWebページや文書などのデータを収集してインデックスに登録してくれるのが特徴である。
  • Graylog
    Graylogも、ElasticSearchをベースに作られた全文検索システムである。ログ収集の仕組みであるsyslogをはじめとして、様々なプロトコルで情報を収集できるようになっている。Fessがクローラで自ら情報を取得するのに対して、Graylogは周囲から送られてくる情報をリアルタイムにインデックス化するのが特徴である。取得した情報は、時間やホストなどの属性データとテキストデータに分解してからElasticSearchに登録することができる。そのため、テキストだけでなく、数値情報も扱うことができる。また、こうした属性情報も活用して、データを高速に絞り込むことができる。さらに、データを解析し、グラフやランキングなどにして可視化表示することができる。また、ダッシュボードを作成できるのも特徴である。
  • SyLAS
    SyLASは、デージーネットが開発したログ管理システムである。もともと、ログの保管データベースとしてMySQLの全文検索機能を使っていたが、ElasticSearchにも対応した。ログ管理のシステムとしては、Graylogに比べて極めてシンプルであるが、これで十分な場合も多い。データの収集は、Linuxで標準的に使われているrsyslogの機能を使って行う。収集したデータは、Webインタフェースから解析することができる。日時と文字列からログを検索できるシンプルな機能を提供している。

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

OSSでコミュニケーション活性化セミナー

日程: 12月11日(水)デージーネット本社
12月13日(金)デージーネット東京営業所
内容: 働き方改革を促進するコミュニケーションツールであるビジネスチャットの「Rocket.Chat」やオンラインストレージ「Nextcloud」について紹介いたします。
ご興味のあるかたはぜひご参加ください。

セミナー申込

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

関連用語

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


デージーネット用語集のページです。「全文検索」という用語と関連情報について説明します。「全文検索」について情報を収集する際、サービスをご検討いただく際などに用語集ページをお役立てください。

全文検索とは先頭へ