1. 株式会社エヌツーエスエム 菅谷 信介さん
全文検索サーバ Fessで何ができるのか?
資料:http://www.slideshare.net/shinsuke/solr-fess
Fessについて
Fessとは…
気軽に全文検索できるもの
・Webサイト、ファイルシステム、データベースなどのクロール
・ブラウザによる管理画面、差分クロール
・登録したカテゴリ毎に検索可能
・デスクトップ検索
など
SolrServerManager
−SolrGroup(いくつでもOK)
−Solrsever(いくつでもOK)
Group単位で更新系、参照系とわけることができる
オプションでマスタとスレーブとしてGroupを使用することも可能
また更新の終わったグループを参照系にさせて
まだ更新されていないグループを参照系から更新系にするこということを
自動で行なってくれる
知らない単語
・Tika
→Lucene のサブプロジェクトで MimeType の取得やファイルから文字列情報を取り出したりする機能を持つ(S2Robotでも実装)。MimeTypeの評価が強力
・S2Robot
→S2Robot は Seasar2 を利用したクローラフレームワーク。 S2Robot を利用することで、サイト上に存在する画像の保存や 全文検索のインデックスを生成など、様々な用途に利用可能。
・MimeType
Multipart Internet Mail Extension Type
下記に詳しい説明記載。
http://www.atmarkit.co.jp/flinux/rensai/apache02/apache02b.html
拡張子のweb版みたいなもの?
拡張子 mimetype
.jpeg imag/jpeg
.html text/html
のようになる。
2. @johtani さん
lucene-gosenの話(仮)
転置インデックス
→単語をKEYにして、ドキュメントIDの配列を値とする表を作成
・N-gram解析
辞書がいらないので、流行語に強い
しかし、ノイズがたくさんヒットする
・形態素解析
品詞情報活用できる、意味のある単語がヒットしてくる
辞書に載っていない単語を抽出しにくい、辞書のメンテナンス
Javaで利用できる形態素解析器
sen(バイナリ版なし)
gosen(現在、サイトがない)
cmecab-java(mecabが必要)
kuromoji(LucenにContributeされた)
lucene-gosen
gosenの進化系
http://code.google.com/p/lucene-gosen/
compositePOS
ナイスとジェーリック?(辞書)
カスタム辞書
いくつもの日本語用のFilterが用意されている
http://code.google.com/p/lucene-gosen/source/browse/trunk/src/java/org/apache/lucene/analysis/ja/?r=91
おまけ-kuromoji
http://atilika.org/#
3. @Ijokarumawak さん
ApacheCon参加レポート
資料:http://www.slideshare.net/KojiKawamura/apache-con-2011report
http://na11.apachecon.com/
watson
http://www.slideshare.net/innotech_conference/opening-keynote-putting-ibm-watson-to-work
simonさんのお話
lucen4のお話
PostingFormat
Ericさんのお話
SolrFlair
/browsを最後につけると何かが起きる?
ブラックライト
http://projectblacklight.org/
twigkit
4. @nobu_k さん
サフィックスアレイの話(仮)
資料:http://www.slideshare.net/nobu_k/suffix-arraysolr
サフィックス接尾辞
接尾辞を辞書順に並べたものがサフィックスアレイ
転置インデックスより検索速度は遅い。
出現位置から最小と最大がわかり、二分探索ができる
SAのメリット
長いクエリに対してngramより速い
デメリット
インデックス構築系
アルゴリズムが難しい。
メモリ上での構築はちょっとだけ楽(けど、簡単ではない)
SAISなど。けど、これだとメモリがいっぱいないとキツイ
HDDでの構築
ランダムアクセスを排除したアルゴリズムが必要(dc3,dc7)
インデックス更新、差分更新できない。
頑張って1台100GB/day
VSストップワード
ストップワード込でインデックス作るみたい。
1.SAを二分探索
2.該当区間から出現位置をロード
3.出現位置をソート
O(n)だけど、CPUのキャッシュミスが激しく影響
4.ソートした出現位置からヒット文書を求める。
同じくキャッシュミスがやばい
・実際にはmallocした領域のページフォルトが一番やばい
SAが活躍する場面
・遺伝子検索(文字が4(+1)なので)
→組み合わせが絞られている中で探すのが便利ってこと??
その他:Suffix Arrayについて
資料:http://www.hgc.jp/~tshibuya/classes/shibuya20040629.pdf
資料:http://sary.sourceforge.net/docs/suffix-array.html.ja
文字を接尾語で分割し、辞書順に並べることで検索したい文字を探すことを効率的に行える。
例:sakurasaku
1.sakurasaku
2.akurasaku
3.kurasaku
4.urasaku
5.rasaku
6.asaku
7.saku
8.aku
9.ku
10.u
これを辞書順に並べると
8.aku
2.akurasaku
6.asaku
9.ku
3.kurasaku
5.rasaku
7.saku
1.sakura
10.u
4.urasaku
となる。
ここで、「aku」という単語を検索した場合、indexの8と2に含まれていることがわかり、
2から8の間で2分探索する。
2
3
4
5←スタート
6
7
8
この仕組により、早く検索することができる