SlideShare a Scribd company logo
1 of 36
Download to read offline
図書館での Solr の使い方
Next-L Enju と国立国会図書館サーチ




           田辺浩介
tanabe@mwr.mediacom.keio.ac.jp
       Twitter: @nabeta
自己紹介
● 田辺浩介(たなべこうすけ)
– 1978 年 4 月 12 日生まれ


–   慶應義塾大学大学院政策・メディア研究科博士課程
–   東洋大学経営学部非常勤講師
–   合同会社次世代図書館システム代表社員

–   司書資格持ち
–   Project Next-L 参加者
Project Next-L
●   図書館関係者による
     図書館管理システム開発プロジェクト
    –   http://www.next-l.jp/

●   2006 年 11 月に
     慶應義塾大学文学部の原田隆史准教授
     (当時)によって設立
Next-L Enju
●   Project Next-L の成果物となる
     オープンソース図書館管理システム

●   Ruby on Rails + PostgreSQL / MySQL
                    + Apache Solr で構築

●   2008 年より開発開始、 github 上で公開
    –   http://github.com/nabeta/next-l
Next-L Enju
http://enju2.slis.keio.ac.jp/
図書館管理システムとは
    どのようなシステムか?
●図書館の業務管理のためのシステム
 – 図書館の本館・分館全体でひとつ
    (という場合が多い)
 – 利用者と司書の両方が使用する
●主に以下のような業務がある


 – 受入
 – 貸出・返却
 – 利用者管理
受入
●   ある本を図書館の資料として登録する業務
    – 書店からの購入、個人・団体からの寄贈
    – 1 冊ごとに各図書館ごとにローカルな ID

        (資料番号)を割り当てる
    – 同じ本を複数冊購入する場合があるため
        ISBN だけでは管理に使えない
    – 予算管理もシステム内で行う場合がある
貸出・返却
●   貸出時に資料番号、利用者番号、
     貸出期限をシステムに保存

●   返却時に返却日を保存
    – もしくは貸出情報を削除


●   予約がかかっている場合の割り当てと通知
利用者管理
●   図書館の利用者についての情報
    – 貸出・返却・予約
    – 連絡先
       ● 予約や返却時の督促に使用
どのようなデータがあるか (1)
●   書誌データ
    – 本そのものについてのデータ
    – タイトル・著者名・出版社名・ ISBN ・
        出版日・価格
    – ISSN ・巻号(雑誌の場合)

    – 分類記号、件名(キーワード)
    – 大きさ(高さ・奥行き)
どのようなデータがあるか (2)
●所蔵データ
 – どの本をどこの図書館が持っているか
 – 図書館名、個別資料番号、受入日
●貸出データ


 – どの本を誰がいつまで借りているか
●利用者データ


 – 氏名・住所・メールアドレス・電話番号・
    利用者番号など
どのようなデータがあるか (3)
●   定型、多数の検索対象となる項目を有する
     (書誌データ、利用者データ)

●   物流管理システムの側面を持つ
    – 貸出・返却・予約・予算管理
    – システムとしてトランザクションや
       統計(集計)機能が必要
検索対象
●   書誌データを基本に、所蔵データ・
     貸出データの組み合わせ

●   たとえば…
    – 「ドラッカー」を含むタイトルで、
       「岩崎」さんが書き、
       2009 年以降に出版され、
       渋谷区立中央図書館で所蔵しており、
       現在予約可能な状態になっている本
図書館の検索の特徴
●それなりの即時性が必要
 – 「現在貸し出されていない本」
●データ自体はそれほど大規模ではない


 – 大規模館でも蔵書は数百万冊
 – 比較的小さなデータがほとんど、全文の
    入っているものはまだ少数
●検索回数もそれほど多くない


 – 東京大学附属図書館で年間 550 万回、
    東京都立図書館で年間 400 万回
図書館の検索の問題点
●   利用者は単純な検索インターフェースを好む
    – 複数の項目をまとめて(項目指定なしで)
       検索したい
    – Web の検索エンジンに慣れている


●   司書は複雑な検索インターフェースを必要と
     する
    – 項目を詳細に指定して検索したい
典型的な検索画面 (1)
典型的な検索画面 (2)
求められる要件
●図書館管理システムとして
  – 既存の RDBMS を活かしつつ、
     全文検索の機能を上手に組み込める仕組み
     がほしい
  – 項目を指定しない検索と、
     項目を指定した検索を両立させたい
●Enju として(≒個人的な理由として)


  – できるだけ OS の標準的なパッケージを
     そのまま使いたい
やってみたこと (1)
●   Senna, Ludia
     – 非正規化したテーブルを用意して、そこに
        検索対象のデータを保存する

●   試してみたが…
    – ActiveRecord が使えるようになったのに、

       また SQL を直接書くのが嫌
    – トランザクションに対応していない
    – いまひとつ不安定
やってみたこと (2)
●   HyperEstraier
    –   acts_as_searchable を使用
    –   高速だが、項目指定による検索が弱い
    –   ファセット検索機能がない
    –   自分で真似をしてみたが非常に遅い

●   ファセット検索機能のある海外の
     図書館システムのソースコードを読むことに
    – 初めて Solr の存在を知る
海外の図書館システム
●   商用製品に加えて、オープンソース・
     ソフトウェアとして開発されているものが
     多数存在
    – 開発コミュニティ” code4lib”
      http://code4lib.org/
      ●
        2011 年は Eric Hatcher さんが講演

●   多くのプロジェクトで Solr を使用
    – うちでも使ってみよう!
acts_as_solr
●   Ruby on Rails 用のプラグイン
    https://github.com/tjackiw/acts_as_solr
    –
●
  Solr への接続→文書 ID の取得→ ActiveRecord
  からの取得を一気にやってくれる
●レコードを保存したときには


  インデックスの更新も自動で行う
●複数モデル(テーブル)にまたがる検索も


  可能
●開発が停滞している点に懸念
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
Sunspot の使用例 (1)
Sunspot の使用例 (2)
Sunspot の使用例 (3)
Rails との連携
●   検索はまず全文検索システムに対して行い、
     そこで得られた ID で RDB を検索して
     実際のデータを取得する
    –   acts_as_searchable, acts_as_solr, sunspot_rails
         ともこの方式
    –   ActiveRecord オブジェクトの配列が
         返ってくる
         ● ハイライトやスニペットの取得は


             もう一手間必要
Enju での利用にあたって (1)
●書誌データ・所蔵データ・利用者データの
  検索で使用
●DIH は使わず、 1 件ずつインデックス作成




●   RDB ですむ部分は RDB にやらせる
     – Solr が止まっても最低限の業務は動かせる

        ように作る
Enju での利用にあたって (2)
●   インデックス作成には CJKAnalyzer を使用
    – 検索漏れを防ぐことに重点を置く


●   インデックスのサイズは書誌 20 万件で
     約 500MB
    – ただし分館なしの設定(所蔵データが
       少ない)のため、参考程度の値
国内での使用例
●   国立国会図書館サーチ
    – Next-L Enju をコンポーネントとして採用
    –   http://iss.ndl.go.jp/

●   九州大学” Cute.Catalog”
    –   http://catalog.lib.kyushu-u.ac.jp/catalog/ja
国立国会図書館サーチ
Cute.Catalog
国外での使用例
●   いっぱい
    –   code4lib での発表例多数
    –   検索業務特化型が多い

●   代表例 : VuFind http://vufind.org/
    – アメリカのヴィラノヴァ大学で開発された
       図書館の検索用インターフェース
    – PHP + Solr 、大学を中心に採用
オーストラリア国立図書館
http://catalogue.nla.gov.au/
感想と今後の課題 (1)
●   今のふつうの図書館の Web 検索であれば
     1 台で十分やっていけるかもしれない
    – ただし commit 回数はできるだけ
       減らさなければならない
    – 検索速度よりも更新速度のほうが問題


●   インデックスの使い分け
    – 一般利用者向けにはわかち書き
    – 司書向けには N-gram
感想と今後の課題 (2)
●   異体字の問題
    – 古典資料を扱う場合は特に重要


●   全文データが入ってきたときにどうするか
    – N-gram でもインデックス作成は間に合う?

More Related Content

Similar to 図書館でのSolrの使い方

RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」Kosuke Tanabe
 
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうにはTakanori Hayashi
 
Code4Lib 2013参加報告
Code4Lib 2013参加報告Code4Lib 2013参加報告
Code4Lib 2013参加報告Masao Takaku
 
物質・材料研究機構におけるNext-L Enjuの採用,導入と今後
物質・材料研究機構におけるNext-L Enjuの採用,導入と今後物質・材料研究機構におけるNext-L Enjuの採用,導入と今後
物質・材料研究機構におけるNext-L Enjuの採用,導入と今後Masao Takaku
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化Nobuyori Takahashi
 
物質・材料研究機構におけるNext-L Enjuの導入事例
物質・材料研究機構におけるNext-L Enjuの導入事例物質・材料研究機構におけるNext-L Enjuの導入事例
物質・材料研究機構におけるNext-L Enjuの導入事例Masao Takaku
 
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)kulibrarians
 
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
20110305_Code4Lib2011参加報告会:田辺浩介参加報告20110305_Code4Lib2011参加報告会:田辺浩介参加報告
20110305_Code4Lib2011参加報告会:田辺浩介参加報告Code4Lib JAPAN
 
Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2潤司 渡部
 
100622 学術情報セミナー
100622 学術情報セミナー100622 学術情報セミナー
100622 学術情報セミナーShuhei Otani
 
Infosta実習 発表ver
Infosta実習 発表verInfosta実習 発表ver
Infosta実習 発表verskdmai
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストMasao Takaku
 
Drupalを活用した Linked Open Dataの 実践的試行環境の構築
Drupalを活用した Linked Open Dataの実践的試行環境の構築Drupalを活用した Linked Open Dataの実践的試行環境の構築
Drupalを活用した Linked Open Dataの 実践的試行環境の構築Takanori Hayashi
 
協調フィルタリング with Mahout
協調フィルタリング with Mahout協調フィルタリング with Mahout
協調フィルタリング with MahoutKatsuhiro Takata
 
最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心に
最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心に最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心に
最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心にYutaka HAYASHI
 
2011 11-19-c4ljp-web上の情報の探し方
2011 11-19-c4ljp-web上の情報の探し方2011 11-19-c4ljp-web上の情報の探し方
2011 11-19-c4ljp-web上の情報の探し方Yuka Egusa
 
マイニング探検会#12
マイニング探検会#12マイニング探検会#12
マイニング探検会#12Yoji Kiyota
 
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2Masayoshi Kondo
 

Similar to 図書館でのSolrの使い方 (20)

全文検索入門
全文検索入門全文検索入門
全文検索入門
 
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
 
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
 
Code4Lib 2013参加報告
Code4Lib 2013参加報告Code4Lib 2013参加報告
Code4Lib 2013参加報告
 
物質・材料研究機構におけるNext-L Enjuの採用,導入と今後
物質・材料研究機構におけるNext-L Enjuの採用,導入と今後物質・材料研究機構におけるNext-L Enjuの採用,導入と今後
物質・材料研究機構におけるNext-L Enjuの採用,導入と今後
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化
 
物質・材料研究機構におけるNext-L Enjuの導入事例
物質・材料研究機構におけるNext-L Enjuの導入事例物質・材料研究機構におけるNext-L Enjuの導入事例
物質・材料研究機構におけるNext-L Enjuの導入事例
 
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)
 
Web API入門
Web API入門Web API入門
Web API入門
 
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
20110305_Code4Lib2011参加報告会:田辺浩介参加報告20110305_Code4Lib2011参加報告会:田辺浩介参加報告
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
 
Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2
 
100622 学術情報セミナー
100622 学術情報セミナー100622 学術情報セミナー
100622 学術情報セミナー
 
Infosta実習 発表ver
Infosta実習 発表verInfosta実習 発表ver
Infosta実習 発表ver
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェスト
 
Drupalを活用した Linked Open Dataの 実践的試行環境の構築
Drupalを活用した Linked Open Dataの実践的試行環境の構築Drupalを活用した Linked Open Dataの実践的試行環境の構築
Drupalを活用した Linked Open Dataの 実践的試行環境の構築
 
協調フィルタリング with Mahout
協調フィルタリング with Mahout協調フィルタリング with Mahout
協調フィルタリング with Mahout
 
最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心に
最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心に最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心に
最近のOPACの動向―次世代OPAC、ディスカバリーサービスを中心に
 
2011 11-19-c4ljp-web上の情報の探し方
2011 11-19-c4ljp-web上の情報の探し方2011 11-19-c4ljp-web上の情報の探し方
2011 11-19-c4ljp-web上の情報の探し方
 
マイニング探検会#12
マイニング探検会#12マイニング探検会#12
マイニング探検会#12
 
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
 

More from Kosuke Tanabe

Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91Kosuke Tanabe
 
Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90Kosuke Tanabe
 
Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89Kosuke Tanabe
 
Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88Kosuke Tanabe
 
Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86Kosuke Tanabe
 
Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78Kosuke Tanabe
 
オープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L Enjuのいまとこれからオープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L EnjuのいまとこれからKosuke Tanabe
 
Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75Kosuke Tanabe
 
Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76Kosuke Tanabe
 
Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74Kosuke Tanabe
 
Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)Kosuke Tanabe
 
Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65Kosuke Tanabe
 
Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64Kosuke Tanabe
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Kosuke Tanabe
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Kosuke Tanabe
 
Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59Kosuke Tanabe
 

More from Kosuke Tanabe (20)

Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91Next-L Enju ワークショップ #91
Next-L Enju ワークショップ #91
 
Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90Next-L Enju ワークショップ #90
Next-L Enju ワークショップ #90
 
Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89Next-L Enju ワークショップ #89
Next-L Enju ワークショップ #89
 
Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88Next-L Enju ワークショップ #88
Next-L Enju ワークショップ #88
 
Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86Next-L Enju ワークショップ #86
Next-L Enju ワークショップ #86
 
Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78Next-L Enju ワークショップ #78
Next-L Enju ワークショップ #78
 
オープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L Enjuのいまとこれからオープンソースの図書館システムNext-L Enjuのいまとこれから
オープンソースの図書館システムNext-L Enjuのいまとこれから
 
Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75Next-L Enju ワークショップ #75
Next-L Enju ワークショップ #75
 
Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76Next-L Enju ワークショップ #76
Next-L Enju ワークショップ #76
 
Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74Next-L Enju ワークショップ #74
Next-L Enju ワークショップ #74
 
nextlenju73
nextlenju73nextlenju73
nextlenju73
 
Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)Next-L Enjuのご紹介(2018年版)
Next-L Enjuのご紹介(2018年版)
 
Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65Next-L Enju ワークショップ #65
Next-L Enju ワークショップ #65
 
enju_ws_65
enju_ws_65enju_ws_65
enju_ws_65
 
Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64Next-L Enju ワークショップ #64
Next-L Enju ワークショップ #64
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62
 
Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62Next-L Enju ワークショップ #62
Next-L Enju ワークショップ #62
 
Next-L Enju LRM
Next-L Enju LRMNext-L Enju LRM
Next-L Enju LRM
 
Enju ws 60
Enju ws 60Enju ws 60
Enju ws 60
 
Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59Next-L Enju 開発ワークショップ #59
Next-L Enju 開発ワークショップ #59
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Recently uploaded (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

図書館でのSolrの使い方

  • 1. 図書館での Solr の使い方 Next-L Enju と国立国会図書館サーチ 田辺浩介 tanabe@mwr.mediacom.keio.ac.jp Twitter: @nabeta
  • 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 年以降に出版され、 渋谷区立中央図書館で所蔵しており、 現在予約可能な状態になっている本
  • 14. 図書館の検索の特徴 ●それなりの即時性が必要 – 「現在貸し出されていない本」 ●データ自体はそれほど大規模ではない – 大規模館でも蔵書は数百万冊 – 比較的小さなデータがほとんど、全文の 入っているものはまだ少数 ●検索回数もそれほど多くない – 東京大学附属図書館で年間 550 万回、 東京都立図書館で年間 400 万回
  • 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 オブジェクトの配列が 返ってくる ● ハイライトやスニペットの取得は もう一手間必要
  • 28. Enju での利用にあたって (1) ●書誌データ・所蔵データ・利用者データの 検索で使用 ●DIH は使わず、 1 件ずつインデックス作成 ● RDB ですむ部分は RDB にやらせる – Solr が止まっても最低限の業務は動かせる ように作る
  • 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 でもインデックス作成は間に合う?