See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Lucene - Wikipedia

Lucene

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Lucene(ルシーン)とは、Javaで記述された全文検索ソフトウェアである。あらかじめ蓄積した大量のデータから、指定したキーワードを探し出す機能を持つ。Javaのクラスライブラリとして提供される。

目次

[編集] 概要

1000万ドキュメントくらいの規模まで1台のマシンで対応できる。 それ以上を複数のマシンで分散検索できるようにするHadoopというサブプロジェクトがある。

検索エンジン(ライブラリ)だけの提供であり、ウェブアプリとしての機能はSolr、クローラーの機能はNutchというサブプロジェクトで開発されている。

日本語のデータをインデックスするためには、CJKAnalyzerかJapaneseAnalyzerを使う。 CJKAnalyzerはbi-gram方式である。 JapaneseAnalyzerを使うには、形態素解析エンジンを組み込む必要があり、オープンソースのSen(MeCabのJava実装)を使う。 また、ベイシステクノロジー社から販売されているJLAでも日本語のデータを形態素解析してインデックスできる。

2007年1月にApacheのトップレベルプロジェクトになり、現在はPMC(Project Management Committee)での開発スタイルをとっている。

[編集] Tips

[編集] CJKAnalyzerとJapaneseAnalyzerの比較

日本語を検索対象とするうえで、bi-gramのCJKAnalyzerと形態素解析のJapaneseAnalyzerがある。 それぞれ長所と短所がある。

以下、それぞれの長所と短所の比較の表。 ベンチマークは Lucene 2.1 と Sen 1.2.2.1 にて、UTF-8で97バイトのタイトルと、2,914バイトの本文があるデータを10,000回追加して計測。 maxBufferedDocs と mergeFactor はそれぞれ 1,000。 全てのデータが同一のデータという偏ったデータであることに注意。 数値結果は、より優れた方を1とした、相対比で表記。

比較項目 CJKAnalyzer JapaneseAnalyzer
検索もれ なし
(ただし不必要な情報も増える)
あり
インデックス追加時間 1 5.77
検索時間 2.673 1
インデックスファイルサイズ 1.419 1

インデックス追加時間は CPUの速度/HDDの速度 の比で決まり、よりCPUが速い場合は、JapaneseAnalyzerが相対的に速くなる。また、文章数が多く、かつ、上記とは異なり全ての文章が異なる場合、CJKAnalyzerでのインデックスファイルサイズはJapaneseAnalyzerよりも、よりさらに大きくなる。

[編集] maxBufferDocsとmergeFactor

Lucene 2.1 ではmaxBufferDocsとmergeFactorという2つのインデックス作成のチューニングパラメータがある。 maxBufferDocsの分だけメモリにため、まとめて書き出される。 mergeFactorの分のDocumentで1つのcfsファイルにまとめられる。 デフォルトは、maxBufferDocs = 10, mergeFactor = 10であり、 一般的には、maxBufferDocs = mergeFactor でよい。

オフィシャルのJavadocでは、バッチモードの場合は、mergeFactor > 10 に、 インタラクティブモードの場合は、mergeFactor < 10 にすると良いと書いてある。 [1]

mergeFactor = 10 の場合は、100 Documentで、cfs ファイルが 10個できると、 それらが1つのcfsにまとめられる。さらに、1000 Document時も同じく10個のcfsファイルが1つにまとめられる。 ただし、Lucene 2.1 では、mergeFactor = 100や1000 の場合、IndexWriter.optimize() するまで、cfsのマージが行われない。

ただし、IndexWriter.optimize() で1つのcfsにマージする際、 n=Document数としたとき、その時間はO(n²)に比例するため、100万Document以上の大規模インデックスの場合、 長くなりすぎてしまう。(将来のバージョンではこの部分が変わる可能性がある)。 結果として、mergeFactor=10 のデフォルトの方が速くなるので、 小規模~大規模、どのパターンでも、デフォルトから変更せずに、深夜に IndexWriter.optimize() を走らせるだけの方がより良いことが多い。

[編集] 書籍

[編集] 外部リンク


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -