Your SlideShare is downloading. ×
PostgreSQLで学ぶBoyer-Moore-Horspoolアルゴリズム
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

PostgreSQLで学ぶBoyer-Moore-Horspoolアルゴリズム

1,627
views

Published on

2009/5/13 日本PostgreSQLユーザ会北海道支部勉強会の資料です(が、大切なことな何も書いていません)。

2009/5/13 日本PostgreSQLユーザ会北海道支部勉強会の資料です(が、大切なことな何も書いていません)。

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,627
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PostgreSQLで学ぶ Boyer-Moor-Horspool法
  • 2. 概要 8.4では、position()、strpos()、replace()、split_part() ● 、string_to_array()のアルゴリズムが改善されている LIKE '%hoge%'よりもstrpos() > 0の方が速そう ● SELECT strpos('high', 'ig') => 2 ● SELECT strpos('high', 'X') => 0 ●
  • 3. PostgreSQLのしくみに興味が無い方向けの情報は ● は、ここで終了
  • 4. 概要(2) Boyer-Moore-Horspoolアルゴリズムについて学ぼう ● PostgreSQLのシステムカタログや関数の実装につい ● て学ぼう
  • 5. B-M-H法とは 文字列検索アルゴリズム ● PostgreSQL8.4で実装された ● Knuth-Morris-Pratt ● Boyer-Moore ● Boyer-Moore-Horspool(HORSPOOL R.N., 1980, Practical ● fast searching in strings) Sunday Quick Search ●
  • 6. 詳しくはWebで!! ● http://en.wikipedia.org/wiki/Boyer-Moore-Horspool_algorithm ● http://www-igm.univ-mlv.fr/~lecroq/string/index.html ● http://www.hgc.jp/~tshibuya/classes/ ●
  • 7. なんでもかんでもシステムカタログ ● pg_proc - 関数 ● pg_operator - 演算子 ● pg_type - データ型 ● pg_cast - キャスト ● 等々 ● select prosrc from pg_proc where proname = 'strpos'; ●
  • 8. src/backend/utils/adt/varlena.c ● text型、varchar型関係の関数が詰まってる ● src/backend/utils/adt/には関数や演算子など、組み込みデー ● タ型を扱う関数が詰まってる
  • 9. ポイント 不一致だった場合に何文字スキップできるかは、 ● patternの末尾の比較対象の文字によって決まる 簡易実装では、256個の配列でbad-char-tableを持って ● いる 日本語どうすんの? ●
  • 10. multibyte/widechar マルチバイト ● 可変長 ● ASCII互換 ● EUC-JP、UTF-8 ● ワイド文字 ● 固定長(16bit/32bit) ● ASCII非互換 ● UTF-16(?)、UTF-32 ● 別にUNICODEじゃなくてもいいけどね ● src/backend/utils/mb/wchar.c ●
  • 11. LIKE '%hoge%'よりもstrpos()の方が速そう ● 自動的に最適化できれば嬉しいんだけど、、、 ● pat[0] = '%' && pat[last] = '%'であればstrpos()するとしたい ● ところだけれど、like_escapeがあるので skiptablemaskを決めてる根拠がよくわからない。と ● いうか調べてない