全文検索エンジン groonga を囲む夕べ 2 #groonga

Slides:



Advertisements
Similar presentations
「AMDで使うと遅いんだけど」 x86/x64最適化勉強会 #4 LT
Advertisements

LZ符号化 森田 岳史.
情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
WagbyR6.5 Update 14 PPT版 更新情報
Chapter11-4(前半) 加藤健.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
株式会社ECナビ システム本部 ECナビラボグループ 春山 征吾
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
④CiNii ⑤NDL-OPAC(雑誌記事) ⑥日経BP
極小集合被覆を列挙する 実用的高速アルゴリズム
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
Shimatterシステムの 初期モデルの正規化
ファイルやフォルダを検索する ①「スタート」→「検索」→「ファイルとフォルダ」とクリックする。
全体ミーティング (4/25) 村田雅之.
JavaによるCAI学習ソフトウェアの開発
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
技術トピックス 2015/03.
Accessによるデータベース(3) Ver /11.
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
ソースコード品質概論 なぜソースの品質を追求するのか
IM、プレゼンス、連絡先 IM 要求を受け入れる Lync 2013 クイック リファレンス プレゼンスを設定または変更する ユーザーの検索
井上 謙次 / deq kenz at oct.zaq.ne.jp
Visual Studio LightSwitchの概要
3-2.データを取り出す 2004年 5月20日(木) 01T6074X 茂木啓悟.
データ構造とアルゴリズム 分割統治 ~ マージソート~.
平成19年5月19日 第3版 東京大学理学部生物化学図書室 前田 朗
MFI Ontology registration Ed2 Evolution management について
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
複数CPU間のための共有メモリ 小島 隆史(中央大学大学院理工学研究科 國井研究室)
Web上で管理・利用できる 面接予約データベースシステムの構築
EBSCOhost 詳細検索 チュートリアル support.ebsco.com.
 データベースによる並列処理 情報論理工学研究室  三宅健太.
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
IPv6アドレスによる RFIDシステム利用方式
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
型付きアセンブリ言語を用いた安全なカーネル拡張
Office IME 2010 を使う.
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
ネットショップデザイン入門Ⅰ・ⅡSEO 2013/12/18 Webデザイン入門 SEOの基本.
3-6.インデックスについて 3-7.関数と併用されることの 多いMySQLコマンド
3-3.テーブルを更新する 2004年 4月22日(木) 01T6074X 茂木啓悟.
     年  月  日 名前 太郎 x 班.
トーリックイデアルの グレブナ基底を求める アルゴリズム – F4およびF5 –
正規表現パート2 NFAエンジンの場合は、 正規表現の磨き上げが必要?.
PHP と SQL (MySQL) の連携 大量のデータを扱う
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
プログラミング 4 整列アルゴリズム.
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
3.リレーショナルデータベース,主キー, SQL
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
構造的類似性を持つ半構造化文書における頻度分析
全体ミーティング (5/23) 村田雅之.
設計情報の再利用を目的とした UML図の自動推薦ツール
Flashを用いたゲーム制作 05A1304 鈴木 浩高.
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
Mondriaan Memory Protection の調査
サブゼミ第7回 実装編① オブジェクト型とキャスト.
Microsoft SharePoint Online の Web サイトを カスタマイズする方法
第11回放送授業.
常設チャット トピック フィードを作成してアクティビティをフォローする Lync 2013 クイック リファレンス
情報処理Ⅱ 2007年12月3日(月) その1.
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
参考:大きい要素の処理.
レジュメの構成 1.はじめに ・このテーマにした理由 ・自分の問題意識 (例)難民選手団は毎回結成 すべきと考える 2.・・・・について
応用プロジェクト後半 第5回 (12/17) 担当:奥田教授
Ibaraki Univ. Dept of Electrical & Electronic Eng.
「図書系職員のための アプリケーション開発講習会」
Presentation transcript:

全文検索エンジン groonga を囲む夕べ 2 #groonga 有限会社 未来検索ブラジル 矢田 晋 いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

祝 本日リリースされた groonga 1.2.8 には grn_dat が含まれています 正確には以前のバージョンにも grn_dat のコードは入っていたのですが,現在の仕様になり,実用に供されるようになったのは groonga 1.2.8 からです. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga そこで今日は 皆さんにちょっと いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ダブル配列の話を 聞いてもらいます ダブル配列というのは grn_dat が用いているデータ構造の名称です. 一部でカルト的な人気を誇っているかもしれません. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga とりあえず grn_dat とは何か いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga grn_dat とは 文字列を ID と関連付けるモジュール grn_pat, grn_hash の仲間 ID 文字列 1 Trebor 2 Werdna 3 L’kbreth 4 Gatekeeper … dat[1] == “Trebor” dat[2] == “Werdna” dat[“L’kbreth”] == 3 dat[“Gatekeeper”] == 4 基本的な機能は文字列に ID を割り当てるというものですが,重要なのは ID と文字列で相互に参照できることです. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga grn_dat と仲間たち grn_pat – パトリシアトライ 前方一致検索をサポートする grn_hash – ハッシュ表 前方一致検索をサポートしない代わりに高速 grn_dat – ダブル配列 前方一致検索をサポートする上に高速 grn_pat と grn_dat が前方一致検索をサポートできるのは,どちらもトライの仲間だからです. ちなみに grn_dat の「高速」は参照に対する評価です. 単純な追加・検索については,ハッシュ表がもっとも優秀です. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga いずれも 参照ロックフリー groonga といえば参照ロックフリーということで,groonga のコアである grn_pat/hash/dat はいずれも参照ロックフリーな実装になっています. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga grn_dat の特徴 前方一致検索と参照時間を重視 文字列更新については後述 イマココ grn_pat grn_hash grn_dat 前方一致検索 ○ × 参照 ◎ 更新 △ サイズ 文字列更新 それぞれの特徴をまとめた表になっています. grn_dat は参照が速い代わりに更新が遅くてサイズが大きいので,速度面で困ったとき,あるいは困ることが予想されるときに利用を検討すれば良いと思います. 文字列更新はテーブル・カラムをリネームしたいという要望から生まれた機能です.ダブル配列だから可能というものではありません. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga 前方一致検索とは Common Prefix Search クエリの前半に一致する文字列を見つける “北海道” ⇒ “北”, “北海”, “北海道” 用途: クエリから索引語への分割 Predictive Search クエリで始まる文字列を見つける “南斗” ⇒ “南斗孤鷲拳(シン)”, “南斗水鳥拳(レイ)”, etc. 用途: クエリの補完・拡張 今回の発表では,説明を簡単にする目的で,Common Prefix Search と Predictive Search をまとめて前方一致検索ということにしました. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

文字列更新とは ID を残して文字列のみを更新すること 用途: テーブル情報の管理 ID 文字列 1 Trebor 2 Werdna 3 用途: テーブル情報の管理 ID 文字列 1 Trebor 2 Werdna 3 L’kbreth 4 Gatekeeper … ID 文字列 1 Trebor 2 Werdna 3 L’kbreth 4 Sorn … 文字列を差し替えるだけの単純な機能ですが,これのおかげでテーブルやカラムの名前変更が可能になりました. Update(“Gatekeeper”, “Sorn”) いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga grn_dat の役割 grn_pat の代替として 前方一致検索が必要なとき 更新より参照の方が多いとき メモリ使用量より参照時間を重視するとき テーブル情報の管理に使うと テーブルやカラムの名前変更が可能になる MySQL で ALTER TABLE RENAME が可能になる いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga 技術的な情報がほしい方へ grn_dat 開発のポイント ダブル配列の参照ロックフリー化 更新の効率化 前方一致検索の効率化 参考資料 参照ロックフリーなダブル配列 http://groonga.org/ja/blog/2011/11/08/grn_dat.html 参考資料に書いてある内容は,本来は参照ロックフリーでないダブル配列をどうやって参照ロックフリーにしたのか,参照ロックフリーにすることで悪化した更新効率をどうやって補っているのか,ダブル配列の苦手な Predictive Search をどうやって効率化したのかというものです. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga そろそろ説明は終わりにして いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

見せてもらおうか 新しいモジュールの性能とやらを ベンチマークに入りますよの合図です. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ベンチマーク(準備) データ jawiki-20111111-all-titles-in-ns0 先頭の 100 万件を使用 構築・参照方法 ランダム順に登録 ランダム順に登録文字列を参照 計測方法 試行回数 11 で中央値を採用 日本語 Wikipedia のタイトル一覧を利用しました. ウィキペディア創設者ジミー・ウェールズからのお願いを無下にすることはできません. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ベンチマーク(参照時間) grn_dat 速い grn_dat は grn_pat の代替としての役割を持つので,grn_pat(青)と grn_dat(緑)を比較してください. 下にあるほど高速です. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ベンチマーク(構築時間) grn_dat 遅い grn_dat は参照の割合が多い用途に使いましょうということを示す実験結果です. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ベンチマーク(サイズ) grn_dat 大きい メモリ消費が気になるときは grn_pat を使った方がいいですよということを示す実験結果です. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

まとめると 前方一致検索ができて 参照時間に優れる いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga そういえば いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

「groonga 開発予報」 というタイトルでした いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga 検討中の内容を紹介します いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ひとつ 頻出する索引語をキャッシュ 「人の世の生き血を啜り」 http://groonga.org/ja/blog/2011/07/13/lexicon-cache.html いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ベンチマーク(参照時間) 偏りが大きければ… 全文検索に用いる索引語を登録する場合,どうしても偏りが大きくなるので,それを利用すれば grn_pat とキャッシュの組み合わせで grn_hash 並みの性能が出せるはずという案です. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

ふたつ 不安定なハッシュ表を調整 「不埒な悪行三昧」 いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ベンチマーク(構築時間) 改良の余地あり… 小規模な grn_hash の構築時間が長くなっている部分は原因がほぼ特定されているので,改良の余地がありそうだという案です. 検索の途中経過なんかも grn_hash に保存しているので,全体的な性能に影響するのではないかと考えています. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

みっつ 見る機会の少ないデータを圧縮 「醜い浮世の鬼を」 http://code.google.com/p/marisa-trie/ みっつ 見る機会の少ないデータを圧縮 「醜い浮世の鬼を」 http://code.google.com/p/marisa-trie/ いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga ベンチマーク(サイズ) 更新できないし 参照も遅いけど… 更新不可で参照も遅い代わりに桁違いにコンパクトなデータ構造があるので,それらを上手く利用できれば無駄をなくすことができるのではないかという案です. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

他にもありますが このくらいで勘弁してください いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

grn_dat と愉快な仲間たちに 絞って紹介しました 今回は grn_dat をメインに持ってきたので,grn_pat/hash/dat に関する内容に絞りました. いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga

全文検索エンジン groonga を囲む夕べ 2 #groonga いいにくの日 2011 全文検索エンジン groonga を囲む夕べ 2 #groonga