Apache Lucene入門

Apache Lucene入門
株式会社 ロンウイット
会社案内
• 株式会社 ロンウイット / RONDHUIT Co., Ltd.
• 〒100-0005
東京都千代田区丸の内1-1-3 AIGビル9F
• 代表者: 関口宏司
• 資本金: 300万円
• 設立: 2006年5月2日
• 業務内容:
– Webサイト内検索の導入サービスの提供
– アプリケーション開発(フレームワーク構築)
• 社名の由来:
– 丸八通り、仏語で「丸(Rond)」「八(Huit)」
2
全文検索
検索対象ドキュメント
LuceneはすべてJavaで書かれた、高性能でフル機能の
テキスト検索エンジンのライブラリです。
「従来型検索」
キーワード
「全文検索」
人手によるキーワード抽出
コンピュータによるキーワード抽出
検索対象ドキュメント
検索対象ドキュメント
Lucene
Java
検索
キーワード
Lucene
は
書かれた
高性能
の
テキスト
ライブラリ
すべて
検索
で
Java
フル
エンジン
で
機能
の
です
3
全文検索(cont’d)
• 従来型(非全文型)検索
– 統一されたキーワード抽出、品質のよいインデックス
– コストがかかる
• 全文検索
– 大量のドキュメントを安価に処理
– キーワードがうまく抽出できない場合がある
– インデックスに「雑音」が含まれる
• 全文検索の方式
– 順次検索方式
• インデックスを作らない
• ドキュメントの先頭から、検索質問語の文字列と順次比較する
• 例:UNIXコマンドのgrep
– 転置索引方式
• あらかじめ検索対象のドキュメントからインデックスを作成
• 例:Lucene、Namazu、Google、Yahoo!、・・・
4
転置索引の作成方法
ドキュメントID
(a)
(b)
(c)
ドキュメント
1
カツオはサザエの弟
2
サザエはワカメの姉
3
ワカメはカツオの妹
カツオ:1、は:1、サザエ:1、の:1、弟:1、
サザエ:2、は:2、ワカメ:2、の:2、姉:2、
ワカメ:3、は:3、カツオ:3、の:3、妹:3
の
1, 2, 3
ワカメ
2, 3
は
1, 2, 3
姉
2
カツオ
1, 3
弟
1
サザエ
1, 2
妹
3
5
転置索引の検索方法
転置索引
検索質問
“ワカメ”
AND
“姉”
の
1, 2, 3
は
1, 2, 3
カツオ
1, 3
サザエ
1, 2
ワカメ
2, 3
姉
2
弟
1
妹
3
AND
ドキュメント 2 がヒット
サザエはワカメの姉
6
全文検索の各方式の特徴
方式
順次検索方式
転置索引方式
転置索引方式
長所
短所
適用例
適用例
•インデックスを使わないので余
計なメンテナンス作業が不要
•インデックスを使わないので「今
あるドキュメント」の内容をリアル
タイムに検索できる
•大量のドキュメントの検索には
不向き
•多数のユーザから繰り返し検
索される状況下ではかなり非効
率
•UNIXのgrepコ
•UNIXのgrepコ
マンド
マンド
•大量ドキュメントを保有し、多
•大量ドキュメントを保有し、多
数のユーザから繰り返し検索さ
数のユーザから繰り返し検索さ
れる状況下でも効率的に処理
れる状況下でも効率的に処理
できる
できる
•大規模な検索に向く
•大規模な検索に向く
•インデックスをメンテナンスしなけ
•インデックスをメンテナンスしなけ
ればならないため、「今あるドキュ
ればならないため、「今あるドキュ
メント」とインデックスの内容に差
メント」とインデックスの内容に差
異が生じる場合がある
異が生じる場合がある
•インデックスのサイズが巨大にな
•インデックスのサイズが巨大にな
るる
•多数のユーザか
•多数のユーザか
ら利用されるアプ
ら利用されるアプ
リケーション
リケーション
•インターネットや
•インターネットや
イントラネットなど
イントラネットなど
のコンテンツ検索
のコンテンツ検索
機能
機能
7
日本語全文検索システムの問題
• インデックスのサイズ
• インデックスの作成にかかる時間
• ヒットしすぎる
– 検索結果一覧の表示順序(ランキング)のスコアを計算
– Google ⇒ PageRank
– Lucene ⇒ tf*idf (Similarity抽象クラスのJavadoc参照)
• 日本語テキスト処理
– 英語などと違って、単語を識別するのが困難
– 形態素解析
• 辞書を用いる方式が主流 ⇒ 流行語に弱い
• JapaneseAnalyzer
– N-gram
• Nの大きさによりノイズや検索漏れ
• CJKAnalyzer (「東京都」⇒「東京」「京都」)
– 表記の揺れ
• 「インタフェース」「インターフェイス」、「引っ越し」「引越し」
8
Apache Lucene
• 全文検索システムを構築するためのオープンソースのJavaラ
イブラリ
• 数百万件の文書を高速に検索。大規模システム向き
• 適用例
–
–
–
–
–
–
–
–
大規模ポータルサイト
大規模検索エンジンポータル
大規模ショッピングサイト/ショッピングモール
オークションサイト
図書館の蔵書検索サービス
ナレッジマネジメントシステム
コールセンター/ヘルプデスクシステム
(テキストマイニング)
• 問題発見・予測
• コールセンター/ヘルプデスクシステムと組み合わせる
9
Lucene API – 概観
インデックスへのドキュメントの追加
IndexWriter
addDocument(Document)
キーワード抽出
インデックス
Analyzer
Directory
(a) インデックスの作成
(b) インデックスの検索
search(Query)
検索質問語からのQueryの組み立て
QueryParser
インデックスの検索
IndexSearcher
検索結果
Hits
10
Luceneのデモ(インターネット)
• RONDHUITサイト内検索サービス
– 新規設置
– Namazuリプレース
• 検索語の要約/強調表示がうまくいかない
– Googleリプレース
• インデックスとオリジナルページとのズレ
• ライバル企業の広告が表示されてしまう
– サイト内検索1ヶ月無料お試し実施中
http://demo.rondhuit-search.com/ssdemokag1000/
• インクリメンタルサーチ
– Lucene+Ajax
http://demo.rondhuit-search.com/etcajax/
11
サイト内検索デモのしくみ
サイト訪問者
③
検索結果
一覧
② 検索リクエスト
デモサーバ
④ 目的ページへ
インターネット
鹿児島県
① クロール
Lucene
インデックス
.html
12
Luceneのデモ(書籍のサンプル)
1. コンテンツ「サザエさん一家」の検索
• Luke − インデックスブラウザ
2. 日本語Analyzerによる単語抽出
• JapaneseAnalyzer/CJKAnalyzer
3. Webアプリケーション
• PDF/Word/XML/HTML/RDBテキストデータの透過的検索
4. Lucene+Ajax=インクリメンタルサーチ!
• 前方一致検索の利用
5. 「もしかして」キーワードアドバイス
大リーグ
政治
政治
小泉
※本デモは書籍のサンプルには含まれません。
松井
• あいまい検索の利用
郵政民営化
スポーツ
スポーツ
女子マラソン
6. テキストマイニング
• TermFreqVector
金融緩和
概念ベクトル
円安
経済
経済
13
Questions?
14