2011年12月20日

第7回 Solr 勉強会に行ってきた

Solr の勉強会 (2011/12/19 19:00 to 21:30) に行ってきました。

ので、そのメモ。

会場を提供してくださった VOYAGE GROUP さん、運営者の方々、ありがとうございました。

Solr に特化した内容ではなく、ちょっと間口を広げて検索一般の話もあって勉強になりました。 というか、ちゃんと統計とか数学とかを勉強し直さないと先がないなぁ、と思ったり。。。

発表とか

Solrベースの全文検索サーバFess

株式会社エヌツーエスエム 菅谷 信介さん

ステータス:

  • Full tExt Search System から FESS。
  • 第2回の勉強会で紹介。その後も開発を継続。
  • 最新バージョンは 5.0 で、Solr は 3.5。
  • 当初は独立した設計だったが、次第に Solr に依存するようになってきた。
  • 商用サポートもあるし、個人でも簡単に導入できる。

機能:

  • インデクスを作成するときにロール情報を付加している。ログイン状態によって検索結果が違う。
  • カテゴリ絞り込みも可能。デスクトップ検索といった機能も追加。クリックログの統計情報もあり。
  • クローリングには S2Robot を利用。 下位レイヤで Tike, POI などを利用。
  • Solr Server Manager -> Solr Group -> Solr Server で段階的に管理。グループAは更新用、グループBは検索用、などのように使い分け可能。

lucene-gosenの話

@johtani さん

lucene-gosen のコミッターのひとり。

org.apache.lucene.analysis.ja パッケージに日本語処理のソースあり。

  • JapanesePartOfSleechKeepFilter ・・設定値の文字のみ残す
  • JapaniseBasicFormFilter ・・基本形に変換 例)悲しき=>悲しい と変換
  • JapaniseKatakanaStemFilter 「ー」変換
  • JapaneseBasicFormFilter 悲しき→悲しいなど基本形に変換して揃えるフィルタ
  • JapaniseWidthFilter ・・ 半角<=>全角に変換するフィルタ
  • JapanisePunctuationFilter ・・ 区切り文字・記号を除く
  • JapanisePartOfSpeechStopFilter ・・記載ワード除く

lucene-gosen は合成ルールを適用できる。合成ルールは外部ファイルで定義しておく。(compositePOS)

Q&A:

  • Q)フィルタをかけると字が詰まるのですが?
  • A)enablePotionIncrements="false" を指定すると字が詰まりません

その他:

  • 転置インデクスを作る話。英語は空白区切りなので割と簡単に処理できる。日本語だと切り方が難しいので形態素解析を使う。ってことで Gosen へ。
  • Lucene / Solr のデフォルトは N-グラム。辞書は不要だが、ノイズも多くなる。意味のある最小単位の文字列に区切るのが形態素解析。
  • Kuromoji はソースごと Lucene に contribute されたらしい。 ("Kuromoji is a Japanese morphological analyzer.")
  • compositePOS の話。NAIST の辞書だと数字を一文字で登録。「100」が三つの文字になってしまう。
  • Kuromoji - atilika.org

ApacheCon参加レポート

@Ijokarumawak さん

Solr に限らず、全般的な話。

  • Hadoop のコミュニティがとても大きくなってきた。
  • IBM の Watson の紹介など。Watson は ASF のソフトウェアを活用している。

Solr の UI に関するライブラリの話。

  • Velocity を使った実装も同梱。
  • JRuby -> TwigKit, Rails -> Blacklight, PHP -> VUFind
  • JavaScript のライブラリもある。

Solr 4.0 に関すること。

サフィックスアレイの話

@nobu_k さん

Solr ではなく、検索一般のこと。 PFI で Sedue の開発をしている人なので、研究開発の側面が強い。

  • 一般論として、速度的には 転置インデクス > Suffix Array > n-gram らしい。
  • Suffix Array の使いどころは遺伝子やバイナリデータの検索。HPC との組み合わせになりそう。
  • ストップワードは二分探索なので、甚大なボトルネックにはならない。

P2P分散検索エンジン ORBISについて

@ceeflyer さん

  • ORBIS - code.google.com

開発の動機:

  • リアルタイム性の高い検索。
  • サーバ増設を簡単に行いたい。
  • スモールスタート / 分散型 => P2P な自律分散ネットワーク

機能的なこと:

  • 1000台未満の小規模ネットワークでフルメッシュを構成する。
  • P2P のノード間の通信には Message Pack を使っているらしい。
  • 結果はXMLで返し、どのノードで追加したかも分かる。
  • インデクスはハッシュ値を元にして、一定数のレプリカを分散して保存する。

終わりに

Fess や ORBIS のように Solr をベースにしたシステムも増えてきている印象です。 一方で、Lucene / Solr を中心とした話は lucene-gosen の発表だけ。 Solr はデフォルトでもそれなりに使えるという部分と、 MySQL などの RDBMS ほどにはユーザー数が増えにくいという部分がありそうです。

形態素解析、Suffix Array、n-gram は文字列検索の基礎的なことですが、 改めてまとめてもらえると勉強になります。

あと、そろそろ Solr4 (trunk) を使ってみないとなぁ、と思いました。

前の勉強会の記録:

コメントを投稿