Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@myokoym

GroongaでPDFを全文検索する(概要編)

More than 5 years have passed since last update.

Groongaで学ぶ全文検索 2016-03-25 - Groonga | Doorkeeperのメモ。

目的

  • PDFのテキストを検索したい
  • Groongaは手段

おおまかな流れ

  • 1. インデックスを作る
    • 毎回grep(シーケンシャル検索)するのは遅い
  • 2. 検索する

こまかい流れ

1. インデックスを作る

  • 1-1. 生データ用のテーブルを作る
  • 1-2. PDFからテキスト(生データ)を抽出する
  • 1-3. 生データをテーブルに入れる
  • 1-4. インデックス用のテーブルを作る
    • すでにデータが入っているので、テーブルを作成したタイミングでインデックスが作成される(静的インデックス構築)。
    • 先にインデックス用のテーブルを作成した場合、データを入れたタイミングで都度インデックスが作成される(動的インデックス構築)。

1-1. 生データ用のテーブルを作る

  • テーブル
    • TABLE_HASH_KEYが無難
    • キーにはPDFファイルのフルパスを入れる
    • 重複しないならファイル名だけでも可
  • カラム
    • bodyカラム
    • PDFから抽出したテキストを入れる
    • 型に注意

1-2. PDFからテキスト(生データ)を抽出する

1-3. 生データをテーブルに入れる

  • Groongaにデータを入れるloadコマンドはJSON形式
  • エスケープが必要
  • 抽出してエスケープしてGroongaのコマンドを出力するスクリプトを書けばコピペしなくて済む

1-4. インデックス用のテーブルを作る

  • はじめのうちはおすすめ設定のテンプレを使おう
  • テーブル
  • カラム
    • COLUMN_INDEX
      • インデックスカラム
    • WITH_POSITOIN
      • 位置情報(文書内のどこに出現したか)をインデックスに含めるかどうか

2. 検索する

  • selectコマンド
  • --queryオプションでキーワードを指定
  • --output_collumnオプションでほしいカラムを指定

まとめ

  • GroongaでPDF検索を実現できる
  • HonyomiというGroongaを使ったPDFの全文検索エンジンがあるので、一から作らなくてもHonyomiを使えばいいかも
    • GitHubにソースコードが公開されているのでカスタマイズも可

雑談したこと

  • GroongaのGは大文字
    • コマンド名を指す場合は小文字
  • テーブル名の先頭は大文字にしたほうがよい?
    • 統一されていればどちらでもよいのでは
    • チュートリアルでは先頭大文字になっている
    • 最近は先頭小文字が流行り?(Rails界隈など)
  • SQLのようにselectなどのキーワード(予約語)を大文字で書ける?
    • 書けない。大文字と小文字を区別しているため。
9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
myokoym
small application creator

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?