第4回solr勉強会 si向けパッケージ製品でのsolr利用と事例紹介

79
SI向けパッケージ製品での Solr利用 事例紹介 (株) NTT データ イントラマート (籍)エンタープライズソリューション本部 (席)プロダクトディベロップメント本部 彰宏 @seikun 1

Upload: akihiro-sei

Post on 27-May-2015

3.833 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

SI向けパッケージ製品でのSolr利用 と 事例紹介

(株)NTTデータ イントラマート  (籍)エンタープライズソリューション本部  (席)プロダクトディベロップメント本部

清 彰宏 / @seikun

1

Page 2: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ちょっとだけ会社紹介Solrを利用した製品の話SIでの事例と苦労話しめ

あじぇんだ

2

Page 3: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

(株)NTTデータ イントラマートSI向け開発基盤パッケージ製品の「intra-mart」と、その上で動くアプリケーションの、 開発 & 販売 & 導入サポートなんかをやってご飯を食べてます。

ちょっとだけ会社紹介

3

Page 4: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

以上

ちょっとだけ会社紹介

4

Page 5: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

すみません、素敵なTシャツとか配れません。

すみません、パンフレットとかも正直需要がないと思い持ってきてません。

すみません、社長すみません。

会社紹介の謝辞

5

Page 6: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ちょっと製品紹介

6

Page 7: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

intra-mart上で動作する、

IM-ContentsSearch(あいえむ-こんてんつさーち)

なる製品を販売しております。というか、intra-martをインストールすると標準で使えます。(Solrは別でセットアップ)

Solrを利用した製品の話

7

Page 8: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ちなみにこの製品のコアAPIは、「cmecab-java」の開発者で、「Apache Solr入門」の著者の1人の、

武田さん が作成したライブラリを使用しています。

Solrを利用した製品の話

8

Page 9: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

その前に、intra-mart をちょっと紹介

9

Page 10: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

・ユーザ管理系のマスタとAPI

・権限管理系のマスタとAPI(会社、組織、役職、グループ、ロール)

・メニュー&ポートレット管理・簡易バッチ機能・ワークフロー&BPMエンジン  etc...

提供している機能

10

Page 11: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

1. jdkをインストールして2. DBを用意して3. intra-martをインストールして4. もろもろの設定を済ませて5. intra-martを起動すると

セットアップ方法

11

Page 12: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

こんな画面が出ます。

12

Page 13: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ちょっと自慢できるところ。

ちまたで流行りのServer Side JavaScript を、

割と以前(約12年前)から採用。

※ JavaScriptエンジンは昔iPlanet, 今Rhino

13

Page 14: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

あと intra-mart 上で動くグループウェアとして、

Intranet Start Pack(通称:スタパ)

とかも提供しております。スケジュール・掲示板・会議室・ブログ・    文書管理・WebMail・コミュニティ・住所録

14

Page 15: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

営業に見られたら怒られるレベルの

intra-mart の紹介以上

15

Page 16: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

IM-ContentsSearchの紹介

16

Page 17: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ワークフロースケジュールブログ掲示板文書管理 etc

IM-ContentsSearchって?

17

→ 全文検索コンテンツ内容

&添付ファイル

Page 18: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

業務データのクローラ作成

IM-ContentsSearchって?

18

→ 全文検索コンテンツ内容

&添付ファイル

Page 19: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

 ・グループウェア ・ワークフロー ・業務アプリ

 を同時に全文検索。

コアは1つだけ

19

Page 20: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

こんな検索画面です。

20

Page 21: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

Solrの利用について

21

Page 22: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

Solr 1.3 cmecab-java

利用しているモノ

22

Page 23: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

・形態素解析フィールド<tokenizer

class=”xxx.StandardMeCabTokenizerFactory” charset=”utf-8”

/>

専用スキーマを設定

23

Page 24: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

・コンテンツタイプフィールド<field name=”type” type=”string”

indexed=”true” stored=”true” multiValued=”true” />

※ ただの文字列配列フィールド。

専用スキーマを設定

24

Page 25: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

・参照許可・不許可フィールド<field name=”sids_allowd” type=”string”

indexed=”true” stored=”true” multiValued=”true” />

<field name=”sids_denied” type=”string”indexed=”true” stored=”true” multiValued=”true” />

※ ただの(略)。

専用スキーマを設定

25

Page 26: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

参照許可・不許可フィールド

をフィルタクエリで検索

→ 検索結果は参照権限がある情報のみ

参照権限チェック

26

Page 27: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

営業に見られたら怒られるレベルの

IM-ContentsSearch の紹介以上

27

Page 28: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

事例紹介

28

Page 29: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

某食品会社様 曰く

社内の共有ファイル3TBを、社内システム(intra-mart)から全文検索したい。

こんなことやりました

29

Page 30: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

当時、技術コンサル担当の私

「Solrという最新のごにょごにょ」

「エンタープライズでの利用はかなり先駆的でごにょごにょ」

頑張って口説いた

30

Page 31: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

情報システム部門の偉い人

「やりましょう!」

落とした

31

Page 32: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

Solrで開発したかった!もちろん有用なシステムです。

正直なところ

32

Page 33: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

これが苦しい道のりの始まりだった・・・。

しかし…

33

Page 34: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

Solrの設定

34

Page 35: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

Tomcat 6.xcmecab-java-1.3jcifs-1.3.14jvm:-Xmx,-Xms 12G他はfessを参考にチューニング

基本的な設定など

35

Page 36: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

お客様からの要望で、 定期的にipadicの    ユーザ辞書を更新内容:品番・品名・特殊な略称

形態素解析

36

Page 37: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ActiveDirectoryとの権限情報連携

37

Page 38: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

1. jcifsで接続し権限情報を取得2. intra-martのグループに専用ツリーを作成。

3.ADの権限をバッチで同期4.検索クエリに反映される

ActiveDirectory連携

38

Page 39: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

クローラ

39

Page 40: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

マルチスレッドなクローラマルチスレッドプログラミングが

初めてなので楽しかった。

独自でクローラを開発

40

Page 41: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

内蔵h2dbによるクロールキュー管理

独自でクローラを開発

41

Page 42: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

索引化対象ファイルの詳細な設定が可能

独自でクローラを開発

42

Page 43: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ちょっと自信作

43

エヘヘっ

Page 44: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

受注したが人がいないため、結局ほぼ自分1人で作成。結果、納期パツパツでS2Robotなどの技術調査が出来ず。

SIだと良くある話(?)

独自で作った理由

44

Page 45: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ここまでは良かった

45

ここからはホントにあったネタ話

Page 46: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ふと疑問に思った私

「そうそう、データセンターのLANってGbitですよね?」PMさらっと

「いや、L2は100Mbit。」

ある日のPMとの会話

46

Page 47: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

「でも関係ないじゃん。共有ディスクはデータセンターにない

 し。」

PMこう続ける

47

Page 48: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

「ほわっちゃ?」(注:What’s?のつもり)

しばし沈黙の後・・・。

48

Page 49: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

「今回対象とする共有ファイルって、全国の各拠点にある

んだよ。」

PMさらにこう続ける

49

Page 50: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

少し冷静を装った私

「それじゃデータセンターの外向きの帯域は?」

50

さらに沈黙の後・・・。

Page 51: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

15Mbpsだよ

51

Page 52: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

「・・・。」

52

Page 53: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

某食品会社様 曰く

社内の共有ファイル3TBを、社内システム(intra-mart)から全文検索したい。

少し回想

53

Page 54: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

社内の共有ファイル3TB

少し回想

54

Page 55: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

3TB(さんてらばいと)

少し回想

55

Page 56: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

3TB / 15Mbps= 1677722 (sec)

1677722 / (24 * 60 * 60)≒ 19.42 (day)

計算してみた。

56

Page 57: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

「全ファイル索引化に、 帯域全部使い果たして、

20日ほど かかります(笑)。」

PMに相談

57

Page 58: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

「・・・。」

58

Page 59: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

第2回Solr勉強会直前のことでした

59

Page 60: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

なんとかした

60

Page 61: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

100MB以上のファイル

サイズでは全体の40%文書数では全体の 2%

対象ファイルの絞り込み

61

Page 62: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

100MB以上のファイル

対象外!

対象ファイルの絞り込み

62

Page 63: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

お客様のラップトップで本社に潜入してクロール!!

現地でのクローリング

63

Page 64: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

お客様のラップトップで本社に潜入してクロール!!

1.2 / 1.8 TB

現地でのクローリング

64

Page 65: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

600GB / 15Mbps= 327680 (sec)

327680 / (24 * 60 * 60)≒ 3.79 (day)

残りを計算してみた。

65

Page 66: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

これなら初期移行できる!

66

Page 67: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

無事初期移行を終えて、カットオーバーを迎えました。

結果

67

Page 68: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

本番運用開始から5ヶ月経過

そろそろ検索結果について要求が出てくるかとビクビク

これから

68

Page 69: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

事例紹介 以上

69

Page 70: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

しめ

70

Page 71: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

社内用語(商品名、品番、略称)があり辞書の拡張(形態素解析前提)が必要

SIにおけるSolr利用

71

Page 72: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ソリューション化しないと学習コストが高くなりがち。

SIにおけるSolr利用

72

Page 73: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

様々な業務情報を1つのスキーマで利用したいシーンが多い(と思う)ので、

汎用的なスキーマ定義が必要になる。 例:dynamicFieldの多用など。

SIにおけるSolr利用

73

Page 74: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

でも、求められる

スループットや応答時間は、検索サービスと比較すると低い。

SIにおけるSolr利用

74

Page 75: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

最後に

75

Page 76: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

IM-ContentsSearchを、

Solr 1.4.1に対応させる予定です。

製品のバージョンアップ

76

Page 77: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

なので、次回予告

77

Page 78: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

Solr1.3から1.4への移行~イントラマートの場合~

78

Page 79: 第4回Solr勉強会 SI向けパッケージ製品でのSolr利用と事例紹介

ご清聴ありがとう  ございました。

79