TUTORIAL

04. インデクシング

このページの項目

検索エンジンは、インデックスを使うことで高速にキーワード検索ができることを理解しました。
ここからはいよいよ検索対象文書を検索エンジンに登録(ここではインデクシングと呼びます)し、実際に検索できることを確認します。

インデクシングに使う検索対象文書や設定ファイルをご自身で準備いただくのもよいのですが、ここでは、KandaSearchの拡張機能ライブラリーで配布されている中から、「livedoorニュースコーパス」のデータとコンフィグを使用することにします。

livedoorニュースコーパス

livedoorニュースコーパスは、NHN Japan 社(現 LINEヤフー 社)のLivedoorニュース記事からHTMLタグを消去したコーパスです。コーパスとは、テキスト等を大量に収集した言語資料を指します。

フィールド構成は以下の通りです。

  • ID(id)
  • カテゴリー(category)
  • 日付(date)
  • タイトル(title)
  • 本文(body)
  • 記事URL(url)

オリジナルのlivedoorニュースコーパスでは記事URLがIDの役割を果たしていますが、KandaSearchが配布しているlivedoorニュースコーパスでは、ファイル名をIDとするJSONファイルとなっています。

収集時期は2012年9月上旬で、2009年8月から2012年5月までに配信されたlivedoorニュースが格納されています。

拡張機能ライブラリー内の「livedoorニュースコーパス」用のデータは、

  • 「Livedoorニュースコーパス」
  • 「Livedoorニュースコーパス(mini)」

の2種類があります。

「Livedoorニュースコーパス(mini)」はKandaSearchの管理画面から登録できるようにするため、「livedoorニュースコーパス」の一部を抜粋し、データサイズが2Mバイト以下になるように調整したデータとなっています。
(サイズが大きい方の)「Livedoorニュースコーパス」はKandaSearchの管理画面から登録できません。インデクシングする方法については、後章の「WebApp開発」の章の「インデクシングAPI」にて説明します。

コーパスデータのダウンロードと内容確認

「Livedoorニュースコーパス(mini)」データ(中身はJSON形式)を、KandaSearchの拡張機能として配布しています。これを入手(PCにダウンロード)する方法をみていきます。

拡張機能ライブラリーの内容はKandaSearchアカウントでログインしていない時にも参照できるようになっています。
拡張機能は、KandaSearchへログインしプロジェクトに追加することで利用可能です。

拡張機能からデータをパソコンにダウンロード

KandaSearchへログインしている時に表示される画面上部のジグソーパズルアイコンをクリックします。

tutorial-jp-045001

ライブラリー内の拡張機能一覧が表示されますので、「Livedoorニュースコーパス(mini)」を探します。

MEMO:
拡張機能は、いくつかのカテゴリに分類されています。
「Livedoorニュースコーパス(mini)」は「DATA」カテゴリに分類されています。ページ上部の絞り込み用の「DATA」ボタンをクリックすると「DATA」の拡張機能だけが表示されますので簡単に見つけることができます。
この絞り込みを解除するには「× クリア」をクリックするか、色のついた「DATA」をクリックします。

tutorial-jp-045002

続いて、「Livedoorニュースコーパス(mini)」内の「詳細」をクリックします。
詳細ページ内の「プロジェクトに追加」をクリック後、追加対象のプロジェクト名をクリックします。 詳細ページ内に「この拡張機能を利用する」と表示されている場合は、それをクリックし、KandaSearchへログインしてからプロジェクトに追加します。

Livedoorニュースコーパス(mini) データ

tutorial-jp-045003

プロジェクトに追加した拡張機能は、追加時に指定したプロジェクトのプロジェクトビュー左サイドの「拡張機能」から確認できます。
表示された拡張機能の一覧から「Livedoorニュースコーパス(mini)」を探し、そのブロック内の「ダウンロード」をクリックします。

tutorial-jp-045004

選択した拡張機能に複数のバージョンが存在する場合、それらの一覧が表示されます。適切なバージョン(多くの場合は最新バージョンが最適です)の行の右端にあるダウンロードアイコンをクリックして、パソコンへダウンロードします。

tutorial-jp-045005

JSONファイルの内容の確認

ドキュメント登録の前に、JSONファイルの内容を確認してみましょう。JSONファイルには、複数の文書(livedoorニュース記事)を配列でまとめた形式で格納されています。
最初のほうの文書を取り出すと、次のようになっています。

{
  "id":"dokujo-tsushin-4778030.txt",
  "url":"http://news.livedoor.com/article/detail/4778030/",
  "category":"dokujo-tsushin",
  "date":"2010-05-22T14:30:00Z",
  "title":"友人代表のスピーチ、独女はどうこなしている?",
  "body":[
    " もうすぐジューン・ブライドと呼ばれる6月。独女の中には自分の式はまだなのに呼ばれてばかり……という「お祝い貧乏」状態の人も多いのではないだろうか? さらに出席回数を重ねていくと、こんなお願いごとをされることも少なくない。",
    "",
    " 「お願いがあるんだけど……友人代表のスピーチ、やってくれないかな?」",
    "",
    " さてそんなとき、独女はどう対応したらいいか?",
    "",
    " 最近だとインターネット等で検索すれば友人代表スピーチ用の例文サイトがたくさん出てくるので、それらを参考にすれば、無難なものは誰でも作成できる。しかし由利さん(33歳)はネットを参考にして作成したものの「これで本当にいいのか不安でした。一人暮らしなので聞かせて感想をいってくれる人もいないし、かといって他の友人にわざわざ聞かせるのもどうかと思うし……」ということで活用したのが、なんとインターネットの悩み相談サイトに。そこに作成したスピーチ文を掲載し「これで大丈夫か添削してください」とメッセージを送ったというのである。",
    "",
    " 「一晩で3人位の人が添削してくれましたよ。ちなみに自分以外にもそういう人はたくさんいて、その相談サイトには同じように添削をお願いする投稿がいっぱいありました」(由利さん)。ためしに教えてもらったそのサイトをみてみると、確かに「結婚式のスピーチの添削お願いします」という投稿が1000件を超えるくらいあった。めでたい結婚式の影でこんなネットコミュニティがあったとは知らなかった。",
    "",
    " しかし「事前にお願いされるスピーチなら準備ができるしまだいいですよ。一番嫌なのは何といってもサプライズスピーチ!」と語るのは昨年だけで10万以上お祝いにかかったというお祝い貧乏独女の薫さん(35歳)",
    "",
    " 「私は基本的に人前で話すのが苦手なんですよ。だからいきなり指名されるとしどろもどろになって何もいえなくなる。そうすると自己嫌悪に陥って終わった後でもまったく楽しめなくなりますね」",
    " ",
    " サプライズスピーチのメリットとしては、準備していない状態なので、フランクな本音をしゃべってもらえるという楽しさがあるようだ。しかしそれも上手に対応できる人ならいいが、苦手な人の場合だと「フランク」ではなく「しどろもどろ」になる危険性大。ちなみにプロの司会者の場合、本当のサプライズではなく式の最中に「のちほどサプライズスピーチとしてご指名させていただきます」という一言があることも多いようだが、薫さん曰く「そんな何分前に言われても無理!」らしい。要は「サプライズを楽しめる」というタイプの人選が大切ということか。",
    "",
    " 一方「ありきたりじゃつまらないし、ネットで例文を検索している際に『こんな方法もあるのか!』って思って取り入れました」という幸恵さん(30歳)が行ったスピーチは「手紙形式のスピーチ」というもの。",
    "",
    " 「○○ちゃんへ みたいな感じで新婦の友人にお手紙を書いて読み上げるやり方です。これなら多少フランクな書き方でも大丈夫だし、何より暗記しないで堂々と読み上げることができますよね。読んだものはそのまま友人にあげれば一応記念にもなります」(幸恵さん)",
    "なるほど、確かにこれなら読みあげればいいだけなので、人前で話すのが苦手な人でも失敗しないかもしれない。",
    "",
    " 主役はあくまで新郎新婦ながらも、いざとなると緊張し、内容もあれこれ考えて、こっそりリハーサル……そんな人知れず頑張るスピーチ担当独女たちにも幸あれ(高山惠)"
  ]
}

このデータは、後ほど利用します。

コレクションの追加

コレクションとは、スキーマやインデックスデータをひとまとめにしたものです。 コレクションを追加する事で、ドキュメントの登録や検索が可能になります。
KandaSearchでは1つのインスタンスに複数のコレクションを追加できます。

それではlivedoorニュースコーパス用のコレクションを追加する作業に入りましょう。

拡張機能からコンフィグをパソコンにダウンロード

コレクション追加時に使用するコンフィグを拡張機能ライブラリーから取得します。

画面上部のジグソーパズルアイコンをクリックします。
拡張機能ライブラリーから「Livedoorニュース configuration(Solr 9)」を見つけ出し、同ブロック内の「詳細」をクリックします。
カテゴリ絞り込み用ボタンから「SOLR COLLECTION CONFIG」をクリックすると、コンフィグファイルのみが表示されるので見つけやすくなります。

なお、コンフィグはApache Solrのバージョンごとに拡張機能が提供されています。インスタンスで使用しているApache Solrのバージョンにあったコンフィグを選択してください。

次に、詳細ページ内の「プロジェクトに追加」をクリック後、追加対象のプロジェクト名を選択します。

Livedoorニュース configuration(Solr 9用) コンフィグ

データの時と同様に、プロジェクトビューの左サイドの「拡張機能」を選択します。表示された「Livedoorニュース configuration(Solr 9)」ブロック内の「ダウンロード」をクリックします。

複数のバージョンが存在する場合、適切なバージョン(多くの場合は最新バージョンが最適です)の行の右端にあるダウンロードアイコンをクリックして、パソコンへダウンロードします。

(2)コンフィグファイルの内容の確認

コレクションを追加する前に、ダウンロードしたコンフィグの中にあるスキーマ定義を確認します。

パソコンにダウンロードしたZIPファイルを解凍します。内容の確認のための解凍作業です。コレクション追加時に指定する際は、ZIP形式のままアップロードします。

解凍した中の「managed-schema」をエディタで開くと、以下の各フィールドが定義されているのがわかります。(バージョンにより、下記とは異なる場合があります。また、一部を抜粋表示しています。)

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="category" type="string" indexed="true" stored="true" docValues="true"/>
<field name="date" type="date" indexed="true" stored="false"/>
<field name="url" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="body" type="text_ja" indexed="true" stored="true" multiValued="true"/>
<field name="title" type="text_ja" indexed="true" stored="true"/>

ここで、 id はユニークキーフィールドであり、managed-schemaでは次のように設定されています。

<uniqueKey>id</uniqueKey>

ユニークキーとは、データベースの主キーのようなもので、当該文書で一意になるようにstring型の値を割り振ります。
Apache Solrの利用においてユニークキーの設定は必須ではありませんが、設定しないと文書の更新や後述のハイライト機能が使えなくなるなど、さまざまな利用制限が出てきてしまいます。
なお、KandaSearchでは、ユニークキーの設定は必須としています。
業務アプリケーションではユニークキーの設定は暗黙の了解になっていますので、ユニークキーは必ず設定する、と覚えておくと良いでしょう。

コレクションの追加

事前の準備が済んだところで、いよいよコレクションを追加します。
プロジェクトオーバービューで、コレクションを追加する対象のインスタンス名をクリックします。

tutorial-jp-045011

インスタンスビューが表示されますので、左サイドメニューから「コレクション」を選択します。
コレクション画面内の「+ コレクションを追加する」をクリックします。

tutorial-jp-045012

「コレクションの追加」画面内の「インポートによる作成」タブをクリックします。
「コレクションの追加」の点線枠内に、ダウンロードしたコンフィグのZIPファイルをドロップ、または、「ファイルを選択」をクリックしてファイルを指定します。
コレクション名を指定(本チュートリアルでは livedoornews とします)し、「保存」をクリックします。

tutorial-jp-045013

コレクションが追加され、一覧に表示されます。

tutorial-jp-045014

インデックス登録

本章の「livedoorニュースコーパス」の節でダウンロードした「Livedoorニュースコーパス(mini)」のデータを使ってドキュメント登録を行います。

MEMO:
ドキュメント登録時に指定するファイルは、非圧縮形式でなければなりませんが、ダウンロードしたデータが圧縮形式の場合もあります。その場合は、パソコン上であらかじめ解凍作業を行ってください。拡張機能「Livedoorニュースコーパス(mini)」は非圧縮のJSONファイルでダウンロードされますので、解凍作業の必要はありません。

インスタンスオーバービューへ移動します。
画面内の「ドキュメントを登録する」をクリックします。

tutorial-jp-045015

「ファイルのアップロード」画面で、コレクションに「livedoornews」を指定します。
次に、ダウンロード済みの「Livedoorニュースコーパス(mini)」のJSONファイルを指定後、「インデックスドキュメント」をクリックします。

tutorial-jp-045016

「ドキュメントのインデックスが正常に作成されました。」と表示されたら、ドキュメント登録(インデクシング)は完了です。

tutorial-jp-045017

KandaSearchのUIから登録できるドキュメントのファイルサイズの上限は2Mバイトです。
このサイズを超えるファイルサイズのドキュメントを登録する場合はApache Solr APIを使用します。 その方法については「WebApp開発」の章で説明します。

エラーが発生したとき

エラーが発生した場合は、以下の方法で原因を調査します。

  • インスタンスオーバービューで、稼働状況やインスタンスストレージの使用状況を確認します。
  • インスタンスビューの「ファイル管理」から、各種のログファイルを確認します。
  • Solr Adminにアクセスし、Dashboardでインスタンスの状況を確認したり、Loggingを確認したりします。

お見積もり・詳細は KandaSearch チームに
お気軽にお問い合わせください。

お問い合わせ