株式会社クリアコード > ククログ

ククログ


検索エンジン自作入門

2014年9月に技術評論社から「検索エンジン自作入門 - 手を動かしながら見渡す検索の舞台裏」という全文検索エンジンについて解説する本が出版されました。

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏
山田 浩之/末永 匡
技術評論社
¥ 2,894

内容

この本は、最初に全文検索エンジンの概要を説明し、それ以降は全文検索エンジンのコードを見ながら実装方法を解説していきます。実装方法を解説した後はさらに改良するにはどうしたらよいか、という話題が続きます。

全文検索エンジンを速いLIKE、という使い方で十分なRDBMSユーザーの人には必要のない内容です。一方、もっと検索の精度を上げたい、性能を上げたいなどチューニングしたい人には役立つ内容です。たとえ、自分で全文検索エンジンを作る予定がなくても、です。

本書の中でもたびたびでてくるのがトレードオフの話です。チューニングするときに直面するのがトレードオフです。全文検索エンジンがどのように作られているのか、どのあたりにどのようなトレードオフがあるのかという知識はチューニング時に非常に役にたちます。

わかりやすいところだとトークナイズの仕方もトレードオフの1つです。形態素解析をしてトークンを切り出すのか、N-gram方式でトークンを切り出すかで精度や性能は変わってきます。

トレードオフはいろいろ紹介されています。「全文検索の安易な利用を避ける」というコラムもあるくらいです。チューニングしたい人は実装の詳細を学ぶだけでなく、トレードオフにも注意して読むとよいでしょう。

チューニングの観点では、トレードオフ以外にも、全文検索エンジンの仕組みの知識が有用です。例えば、タグ検索は全文検索と同じ仕組みで効率よく実現できます。仕組みがわかっていると今までよりも効率よく検索できるかもしれません。このような話もコラムで触れています。

全体的に平易な表現で書かれているので全文検索エンジンに興味はあったけど今まで手が出ていなかったという人でも大丈夫です。

著者

この本は山田浩之さんと末永匡さんの共著です。山田さんはLuxというオープンソースの全文検索エンジンを開発者で、末永さんはGroongaというオープンソースの全文検索エンジンの開発者です。2人とも全文検索エンジンの開発経験があります。

山田さんは数年前にgihyo.jpに検索エンジンはいかにして動くのか?という連載をしていました。この連載も非常に有用な内容なので、全文検索エンジンに興味のある方は合わせて読んでみてください。

まとめ

「検索エンジン自作入門 - 手を動かしながら見渡す検索の舞台裏」という本の内容を紹介しました。全文検索エンジンをチューニングしたい、単純に興味があるという人はぜひ読んでみてください。

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏
山田 浩之/末永 匡
技術評論社
¥ 2,894

お知らせ

11/29(土)に開催予定の全文検索エンジンGroongaを囲む夕べ5で著者の1人である末永さん…だけでなく、もう1人の著者の山田さんも*1サインをしてくれるサイン会を実施する予定です!一気に著者全員のサインを集められるチャンスです!すでに検索エンジン自作入門を購入している方は本を持って参加してサインをもらってください。まだ購入していない方は…まだイベントまで1ヶ月半あるので事前に購入して読んで、そして本を持ってイベントに参加してサインをもらってください。

*1 コメント欄で一緒にサインしてくれることが決まりました!

2014-10-10

«前の記事: Cutterで画像を使ったテストを書くには 最新記事 次の記事: OSC2014 Tokyo/FallでMySQLユーザー向けに日本語全文検索について紹介予定»
タグ:
年・日ごとに見る
2008|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|