More Related Content
Similar to 図書館でのSolrの使い方 (20)
More from Kosuke Tanabe (20)
図書館でのSolrの使い方
- 2. 自己紹介
● 田辺浩介(たなべこうすけ)
– 1978 年 4 月 12 日生まれ
– 慶應義塾大学大学院政策・メディア研究科博士課程
– 東洋大学経営学部非常勤講師
– 合同会社次世代図書館システム代表社員
– 司書資格持ち
– Project Next-L 参加者
- 3. Project Next-L
● 図書館関係者による
図書館管理システム開発プロジェクト
– http://www.next-l.jp/
● 2006 年 11 月に
慶應義塾大学文学部の原田隆史准教授
(当時)によって設立
- 4. Next-L Enju
● Project Next-L の成果物となる
オープンソース図書館管理システム
● Ruby on Rails + PostgreSQL / MySQL
+ Apache Solr で構築
● 2008 年より開発開始、 github 上で公開
– http://github.com/nabeta/next-l
- 6. 図書館管理システムとは
どのようなシステムか?
●図書館の業務管理のためのシステム
– 図書館の本館・分館全体でひとつ
(という場合が多い)
– 利用者と司書の両方が使用する
●主に以下のような業務がある
– 受入
– 貸出・返却
– 利用者管理
- 7. 受入
● ある本を図書館の資料として登録する業務
– 書店からの購入、個人・団体からの寄贈
– 1 冊ごとに各図書館ごとにローカルな ID
(資料番号)を割り当てる
– 同じ本を複数冊購入する場合があるため
ISBN だけでは管理に使えない
– 予算管理もシステム内で行う場合がある
- 8. 貸出・返却
● 貸出時に資料番号、利用者番号、
貸出期限をシステムに保存
● 返却時に返却日を保存
– もしくは貸出情報を削除
● 予約がかかっている場合の割り当てと通知
- 9. 利用者管理
● 図書館の利用者についての情報
– 貸出・返却・予約
– 連絡先
● 予約や返却時の督促に使用
- 10. どのようなデータがあるか (1)
● 書誌データ
– 本そのものについてのデータ
– タイトル・著者名・出版社名・ ISBN ・
出版日・価格
– ISSN ・巻号(雑誌の場合)
– 分類記号、件名(キーワード)
– 大きさ(高さ・奥行き)
- 11. どのようなデータがあるか (2)
●所蔵データ
– どの本をどこの図書館が持っているか
– 図書館名、個別資料番号、受入日
●貸出データ
– どの本を誰がいつまで借りているか
●利用者データ
– 氏名・住所・メールアドレス・電話番号・
利用者番号など
- 12. どのようなデータがあるか (3)
● 定型、多数の検索対象となる項目を有する
(書誌データ、利用者データ)
● 物流管理システムの側面を持つ
– 貸出・返却・予約・予算管理
– システムとしてトランザクションや
統計(集計)機能が必要
- 13. 検索対象
● 書誌データを基本に、所蔵データ・
貸出データの組み合わせ
● たとえば…
– 「ドラッカー」を含むタイトルで、
「岩崎」さんが書き、
2009 年以降に出版され、
渋谷区立中央図書館で所蔵しており、
現在予約可能な状態になっている本
- 15. 図書館の検索の問題点
● 利用者は単純な検索インターフェースを好む
– 複数の項目をまとめて(項目指定なしで)
検索したい
– Web の検索エンジンに慣れている
● 司書は複雑な検索インターフェースを必要と
する
– 項目を詳細に指定して検索したい
- 18. 求められる要件
●図書館管理システムとして
– 既存の RDBMS を活かしつつ、
全文検索の機能を上手に組み込める仕組み
がほしい
– 項目を指定しない検索と、
項目を指定した検索を両立させたい
●Enju として(≒個人的な理由として)
– できるだけ OS の標準的なパッケージを
そのまま使いたい
- 19. やってみたこと (1)
● Senna, Ludia
– 非正規化したテーブルを用意して、そこに
検索対象のデータを保存する
● 試してみたが…
– ActiveRecord が使えるようになったのに、
また SQL を直接書くのが嫌
– トランザクションに対応していない
– いまひとつ不安定
- 20. やってみたこと (2)
● HyperEstraier
– acts_as_searchable を使用
– 高速だが、項目指定による検索が弱い
– ファセット検索機能がない
– 自分で真似をしてみたが非常に遅い
● ファセット検索機能のある海外の
図書館システムのソースコードを読むことに
– 初めて Solr の存在を知る
- 21. 海外の図書館システム
● 商用製品に加えて、オープンソース・
ソフトウェアとして開発されているものが
多数存在
– 開発コミュニティ” code4lib”
http://code4lib.org/
●
2011 年は Eric Hatcher さんが講演
● 多くのプロジェクトで Solr を使用
– うちでも使ってみよう!
- 22. acts_as_solr
● Ruby on Rails 用のプラグイン
https://github.com/tjackiw/acts_as_solr
–
●
Solr への接続→文書 ID の取得→ ActiveRecord
からの取得を一気にやってくれる
●レコードを保存したときには
インデックスの更新も自動で行う
●複数モデル(テーブル)にまたがる検索も
可能
●開発が停滞している点に懸念
- 23. Sunspot
● Ruby の Solr 接続用ライブラリ
– 現在 Next-L Enju で使用
– https://github.com/outoftime/sunspot
– Solr 1.4.1 を同梱
● rsolr の上に作られており、抽象度が高い
– https://github.com/mwmitchell/rsolr
● Rails に依存しないが、 Rails 用の連携機能は
標準装備
– sunspot_rails
- 27. Rails との連携
● 検索はまず全文検索システムに対して行い、
そこで得られた ID で RDB を検索して
実際のデータを取得する
– acts_as_searchable, acts_as_solr, sunspot_rails
ともこの方式
– ActiveRecord オブジェクトの配列が
返ってくる
● ハイライトやスニペットの取得は
もう一手間必要
- 29. Enju での利用にあたって (2)
● インデックス作成には CJKAnalyzer を使用
– 検索漏れを防ぐことに重点を置く
● インデックスのサイズは書誌 20 万件で
約 500MB
– ただし分館なしの設定(所蔵データが
少ない)のため、参考程度の値
- 30. 国内での使用例
● 国立国会図書館サーチ
– Next-L Enju をコンポーネントとして採用
– http://iss.ndl.go.jp/
● 九州大学” Cute.Catalog”
– http://catalog.lib.kyushu-u.ac.jp/catalog/ja
- 33. 国外での使用例
● いっぱい
– code4lib での発表例多数
– 検索業務特化型が多い
● 代表例 : VuFind http://vufind.org/
– アメリカのヴィラノヴァ大学で開発された
図書館の検索用インターフェース
– PHP + Solr 、大学を中心に採用
- 35. 感想と今後の課題 (1)
● 今のふつうの図書館の Web 検索であれば
1 台で十分やっていけるかもしれない
– ただし commit 回数はできるだけ
減らさなければならない
– 検索速度よりも更新速度のほうが問題
● インデックスの使い分け
– 一般利用者向けにはわかち書き
– 司書向けには N-gram
- 36. 感想と今後の課題 (2)
● 異体字の問題
– 古典資料を扱う場合は特に重要
● 全文データが入ってきたときにどうするか
– N-gram でもインデックス作成は間に合う?