コミュニティの投稿        稿検索をScala+Solrで実現S l S l で実現〜Solr暦2週間なビギナーの挑戦                戦〜Fungoing LLC / Satoshi MiyauchiTwitter : @...
Profile 宮内 聖 / Satoshi Miyauchi @bibrost ⾃宅警備員(週休2⽇)    兼   Fungoing LLC 代表                       g ng  兼   株式会社監査と分析     ...
Recent Works3⽉30⽇Open katsumawe                  eb.net               勝間和代                  代⽒の有料コンテンツ会員向けコミュニティ          ...
やりたいことコミュニティのフィードを検索して抽出する機能            検                         Page : 3
親投稿とコメントがD         DB上はバラバラなので 直接検索をかけるの         のは現実的じゃない    どうしたも        ものか・・・                       Page : 4
どうやらSolrとかい          いうのがあるらしい全⽂検索をHTTPイインターフェイスで    使えるらししく便利そう                      Page : 5
さっそく某         某書を⼊⼿しAWSの環境に⼊れて         ていろいろ試してみる                      Page : 6
まずはSolr環境を構築           築1. Solr の取得と設定  →せっかくなので3.1に  →せっかくなので3 1に2. start.jarをデーモン化して         j をデ   ン化して                ...
環境はできたのでさ そくアプリ検証            さっそくアプリ検証            さScala⽤のライブラ ラリはなかったのでJavaのSolrjを使う            うことに・・・しかし               ...
Solrjめんどくさいぞ           ぞ           ぞ・・・String url = "http://localhost:8983/                   //             3/solr";SolrS...
アプリケーション側ではアプリケ ション側でははもっと楽に使いたい!           はも と楽に使いたい!  ということでScala            aで必要な部分だけ    簡単に使えるよ          ようにラップした    ...
初期設定// パッケージのimportimport com.fungoing.sprism._// インデックス追加・更新用のクラス              スを定義case class MySolrDoc( id:String, bo   ...
デ タ追加 更新データ追加・更新 MySolrDoc( “id”,”          ( “ ” ””body” ) > MySolr                      ”                       以上      ...
検索(1)// 十件とりあえず取得val docs = MySolr by(“* *”) fetch(10)                      *:* )// SolrDocumentのListが返って   てくるdocs.foreac...
検索(2)// 11~20件目を取得val docs =MySolr by(“*:*”) skip(10) f                          fetch(10)// timestampの降順で取               ...
これでだいぶ楽に使えるようになった!        使                     Page : 15
早速コミュニティに組         組み込んでみる※機能デモ                   Page : 16
まだ使い始    始めたばかりですが、⾮常に使い    いやすいし⾼機能!今後も様々    々な⽤途で使っていきたい。Scala楽しい       い⾔語なのでぜひお試しを。毎週⽔曜⽇ ⽇夜に秋葉原or渋⾕で      ⽇夜に秋葉原 渋⾕で勉強...
ありがとうご     ございました。Satoshi Miyauc @bibrost             chi                          Page : 18
Upcoming SlideShare
Loading in …5
×

Solr勉強会#5@bibrost 20110516

2,014 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,014
On SlideShare
0
From Embeds
0
Number of Embeds
177
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Solr勉強会#5@bibrost 20110516

  1. 1. コミュニティの投稿 稿検索をScala+Solrで実現S l S l で実現〜Solr暦2週間なビギナーの挑戦 戦〜Fungoing LLC / Satoshi MiyauchiTwitter : @bibrost
  2. 2. Profile 宮内 聖 / Satoshi Miyauchi @bibrost ⾃宅警備員(週休2⽇) 兼 Fungoing LLC 代表 g ng 兼 株式会社監査と分析 システム開 開発担当 兼 株式会社ニジボックス 傭兵 Webデザイン、映像編集、Webサービス Webデザイン 映像編集 Webサ ビス スの開発など・・・いろいろ 引きこもりフリーランス⽣活。と思った たら最近はたまに出勤。 最近はScala、MongoD DBに⼒を⼊れています Page : 1
  3. 3. Recent Works3⽉30⽇Open katsumawe eb.net 勝間和代 代⽒の有料コンテンツ会員向けコミュニティ Scala+P g PostgreSQL+MongoDBで開発 Q g で開発 検索機能 能を追加するためにSolrを導⼊中4⽉中旬〜 ソーシャルアプリ開発のお⼿伝い リクルー ート⼦会社のニジボックスという会社で アプリ開 開発のお⼿伝い中 PHP+ MySQL + MongoDBなど Page : 2
  4. 4. やりたいことコミュニティのフィードを検索して抽出する機能 検 Page : 3
  5. 5. 親投稿とコメントがD DB上はバラバラなので 直接検索をかけるの のは現実的じゃない どうしたも ものか・・・ Page : 4
  6. 6. どうやらSolrとかい いうのがあるらしい全⽂検索をHTTPイインターフェイスで 使えるらししく便利そう Page : 5
  7. 7. さっそく某 某書を⼊⼿しAWSの環境に⼊れて ていろいろ試してみる Page : 6
  8. 8. まずはSolr環境を構築 築1. Solr の取得と設定 →せっかくなので3.1に →せっかくなので3 1に2. start.jarをデーモン化して j をデ ン化して て てstart/stopするのを書く / pするのを書く3. ⽇本語インデックスのため めにAnt、Senを⼊れる4. あれ、Senがうごかない・ ・・・ →どうやら本のサンプルは 1だと使えない罠 どうやら本のサンプルは は3.1だと使えない罠 は35. 関⼝さんのブログを読んで でLucene gosenを⼊れる でLucene-gosenを⼊れる6. うごいた! Page : 7
  9. 9. 環境はできたのでさ そくアプリ検証 さっそくアプリ検証 さScala⽤のライブラ ラリはなかったのでJavaのSolrjを使う うことに・・・しかし Page : 8
  10. 10. Solrjめんどくさいぞ ぞ ぞ・・・String url = "http://localhost:8983/ // 3/solr";SolrServer server = new CommonsHttp pSolrServer( url );SolrInputDocument doc1 = new SolrIn nputDocument();doc1.addField( "id", "id1", 1.0f );doc1.addField( namedoc1 addField( "name", "doc1", 1 0f ); doc1 1.0f fdoc1.addField( "price", 10 );Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();docs.add(docs add( doc1 );docs.add( doc2 );server.add( docs );server.commit(); ()SolrQuery query = new SolrQuery(); y q y yquery.setQuery( "*:*" ); uery.ORDER.asc );query.addSortField( "price", SolrQuQueryResponse rsp = server query( q server.query( query );SolrDocumentList docs = rsp.getResu ults(); Page : 9
  11. 11. アプリケーション側ではアプリケ ション側でははもっと楽に使いたい! はも と楽に使いたい! ということでScala aで必要な部分だけ 簡単に使えるよ ようにラップした Page : 10
  12. 12. 初期設定// パッケージのimportimport com.fungoing.sprism._// インデックス追加・更新用のクラス スを定義case class MySolrDoc( id:String, bo ody:String ) extends SprismSolrDoc// データ取得用のオブジェクトを定義 義object MySolr extends SprismSolr{ // SolrのURLを設定する override val url = "http://50.1 18.53.240:8983/solr"} これだけ けでOK Page : 11
  13. 13. デ タ追加 更新データ追加・更新 MySolrDoc( “id”,” ( “ ” ””body” ) > MySolr ” 以上 上 投稿の頻度も多 多くないので 毎回commitされる るようにしてある// 記号気持ち悪い人は 「 MySolrDoc( “id”,”body” ) into MySolr 」でもOK Page : 12
  14. 14. 検索(1)// 十件とりあえず取得val docs = MySolr by(“* *”) fetch(10) *:* )// SolrDocumentのListが返って てくるdocs.foreach( println(_) )SolrDocument[{id=1111, body=test2, timestamp=Mon May 16 04:20:45 JST 2011}] [{ , y , p y }]SolrDocument[{id=151, body=test ment, timestamp=Mon May 16 04:25:05 JST 2011}]SolrDocument[{id=1651, body=test ment, timestamp=Mon May 16 04:25:09 JST 2011}] Page : 13
  15. 15. 検索(2)// 11~20件目を取得val docs =MySolr by(“*:*”) skip(10) f fetch(10)// timestampの降順で取 取得val docs =MySolr by(“*:*”) sortDesc(“timestamp”) skip(0) fetch(10)// 昇順ももちろんOKval docs =MySolr by(“*:*”) sortAsc(“ “timestamp”) skip(0) fetch(10) Page : 14
  16. 16. これでだいぶ楽に使えるようになった! 使 Page : 15
  17. 17. 早速コミュニティに組 組み込んでみる※機能デモ Page : 16
  18. 18. まだ使い始 始めたばかりですが、⾮常に使い いやすいし⾼機能!今後も様々 々な⽤途で使っていきたい。Scala楽しい い⾔語なのでぜひお試しを。毎週⽔曜⽇ ⽇夜に秋葉原or渋⾕で ⽇夜に秋葉原 渋⾕で勉強会もや やっています。 Page : 17
  19. 19. ありがとうご ございました。Satoshi Miyauc @bibrost chi Page : 18

×