Field Collapsing/Result Groupingについて
第4回Solr勉強会
2010/11/19
株式会社シーマーク 大谷 純
Copyright © 2010 Seamark, Inc. All Rights Reserved 2
自己紹介
• 株式会社シーマークの人
http://www.seamark.co.jp/
ほとんど会社にいませんが。。。
• 「Apach...
Copyright © 2010 Seamark, Inc. All Rights Reserved 3
アジェンダ
• Field Collapsing / Result Groupingの概要
• Field Collapsing(SOLR...
Copyright © 2010 Seamark, Inc. All Rights Reserved 4
アジェンダ
• Field Collapsing / Result Groupingの概要
• Field Collapsing(SOLR...
Copyright © 2010 Seamark, Inc. All Rights Reserved 5
Field Collapsing / Result Groupingとは
• 指定されたフィールド(Field)の値が同じものをグループ
...
Copyright © 2010 Seamark, Inc. All Rights Reserved 6
Field Collapsing / Result Groupingの例
• メールのスレッド表示
• ドメインでグループ化したWebページ
Copyright © 2010 Seamark, Inc. All Rights Reserved 7
アジェンダ
• Field Collapsing / Result Groupingの概要
• Field Collapsing(SOLR...
Copyright © 2010 Seamark, Inc. All Rights Reserved 8
Field Collapsingの利用方法
• Solr1.4.1にSOLR-236-1_4_1.patchを適用
• QueryComp...
Copyright © 2010 Seamark, Inc. All Rights Reserved 9
Field Collapsingの動作
• 検索にヒットするドキュメントセットを取得
• 取得したドキュメントセットをcollapse.f...
Copyright © 2010 Seamark, Inc. All Rights Reserved 10
Field Collapsingのパラメータ
パラメータ 説明
collapse.field 折りたたむ(GroupBy)ためのフィール...
Copyright © 2010 Seamark, Inc. All Rights Reserved 11
シナリオデータ
id 名前 政党名 尊敬する人物 趣味 出身校 年齢
0 菅直人 民主党 東京工業大学 63
1 鳩山由紀夫 民主党 J...
Copyright © 2010 Seamark, Inc. All Rights Reserved 12
Field Collapsingの検索結果例
(result部分)
Collapse前 Collapse後
Copyright © 2010 Seamark, Inc. All Rights Reserved 13
Field Collapsingの検索結果例
(折りたたまれたドキュメント)
collapse.fieldで指定したフィールド名
折りた...
Copyright © 2010 Seamark, Inc. All Rights Reserved 14
Field Collapsingの制限事項
• 残念ながらtrunkに採用されず。=>今後メンテナンスがさ
れない可能性大
• Dist...
Copyright © 2010 Seamark, Inc. All Rights Reserved 15
アジェンダ
• Field Collapsing / Result Groupingの概要
• Field Collapsing(SOL...
Copyright © 2010 Seamark, Inc. All Rights Reserved 16
Result Groupingの利用方法
• trunkのSolrを利用(Solr4.0)
• QueryComponentの機能として...
Copyright © 2010 Seamark, Inc. All Rights Reserved 17
Result Groupingの動作
• グループ化検索を行うために、2回の検索を行っている
• 検索にヒットするドキュメントセットの中...
Copyright © 2010 Seamark, Inc. All Rights Reserved 18
Result Groupingの動作
グループキー SearchGroup
"民主党"
"自民党"
"みんなの党"
groupMap S...
Copyright © 2010 Seamark, Inc. All Rights Reserved 19
Result Groupingのパラメータ
パラメータ 説明
group trueで結果グルーピング機能を使う
group.field ...
Copyright © 2010 Seamark, Inc. All Rights Reserved 20
Result Groupingの検索結果例
(group.field指定)
group.fieldで指定したフィールド名
複数指定時はこ...
Copyright © 2010 Seamark, Inc. All Rights Reserved 21
Result Groupingの検索結果例
(group.query)
group.queryで指定したquery
検索ヒット数=折りた...
Copyright © 2010 Seamark, Inc. All Rights Reserved 22
Result Groupingの制限事項(2010/11/17現在)
• Distributed Searchは未対応
• 総グループ数...
Copyright © 2010 Seamark, Inc. All Rights Reserved 23
アジェンダ
• Field Collapsing / Result Groupingの概要
• Field Collapsing(SOL...
Copyright © 2010 Seamark, Inc. All Rights Reserved 24
Field CollapsingとResult Groupingの違い
Field Collapsing Result Grouping...
Copyright © 2010 Seamark, Inc. All Rights Reserved 25
結論
• Result Groupingの実装を待てる場合は待つ
※実装に積極的に参加する手もある
• 今すぐ分散検索したければFiel...
Upcoming SlideShare
Loading in …5
×

Field collapsing/Result groupingについて

5,904 views

Published on

第4回Solr勉強会発表資料

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,904
On SlideShare
0
From Embeds
0
Number of Embeds
246
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Field collapsing/Result groupingについて

  1. 1. Field Collapsing/Result Groupingについて 第4回Solr勉強会 2010/11/19 株式会社シーマーク 大谷 純
  2. 2. Copyright © 2010 Seamark, Inc. All Rights Reserved 2 自己紹介 • 株式会社シーマークの人 http://www.seamark.co.jp/ ほとんど会社にいませんが。。。 • 「Apache Solr入門」の著者 絶賛発売中!?
  3. 3. Copyright © 2010 Seamark, Inc. All Rights Reserved 3 アジェンダ • Field Collapsing / Result Groupingの概要 • Field Collapsing(SOLR-236)について • Result Grouping(SOLR-1682=>trunk)について • Field CollapsingとResult Groupingの違いについて
  4. 4. Copyright © 2010 Seamark, Inc. All Rights Reserved 4 アジェンダ • Field Collapsing / Result Groupingの概要 • Field Collapsing(SOLR-236)について • Result Grouping(SOLR-1682=>trunk)について • Field CollapsingとResult Groupingの違いについて
  5. 5. Copyright © 2010 Seamark, Inc. All Rights Reserved 5 Field Collapsing / Result Groupingとは • 指定されたフィールド(Field)の値が同じものをグループ 化して検索結果を折りたたむ(Collapse)機能 • SOLR-236としてJIRAに登録 https://issues.apache.org/jira/browse/SOLR-236 • 2007年に登録されてから未だに正式にサポートされてい ない(※Solr 1.4.1時点) • http://wiki.apache.org/solr/FieldCollapsing
  6. 6. Copyright © 2010 Seamark, Inc. All Rights Reserved 6 Field Collapsing / Result Groupingの例 • メールのスレッド表示 • ドメインでグループ化したWebページ
  7. 7. Copyright © 2010 Seamark, Inc. All Rights Reserved 7 アジェンダ • Field Collapsing / Result Groupingの概要 • Field Collapsing(SOLR-236)について • Result Grouping(SOLR-1682=>trunk)について • Field CollapsingとResult Groupingの違いについて
  8. 8. Copyright © 2010 Seamark, Inc. All Rights Reserved 8 Field Collapsingの利用方法 • Solr1.4.1にSOLR-236-1_4_1.patchを適用 • QueryComponentの代わりにCollapseComponentを 利用 • solrconfig.xml設定例 <searchComponent name=“collapse” class=“org.apache.solr.handler.component.CollapseComponent” /> <requestHandler name=“standard” class=“solr.SearchHandler” default=“true”> ・・・ <arr name="components“> <str>collapse</str> <str>facet</str> <str>highlight</str> <str>mlt2</str> <str>debug</str> </arr> </requestHandler>
  9. 9. Copyright © 2010 Seamark, Inc. All Rights Reserved 9 Field Collapsingの動作 • 検索にヒットするドキュメントセットを取得 • 取得したドキュメントセットをcollapse.fieldの値をもとに HashMap(値、Docグループ)を利用してグループ化 • グループ化された情報をもとに各種情報取得(折りたた み後のドキュメント情報の取得など)を実施
  10. 10. Copyright © 2010 Seamark, Inc. All Rights Reserved 10 Field Collapsingのパラメータ パラメータ 説明 collapse.field 折りたたむ(GroupBy)ためのフィールド名(必須) 複数フィールドはして不可 collapse.type 折りたたみのタイプ(デフォルト:normal) ・normal 検索結果のリスト内すべてのドキュメントに対してcollapse.fieldの 値が同値の場合に折りたたみ処理を行う ・adjacent 検索結果のリストの中で隣接しているドキュメントでcollapse.field の値が同値の場合にのみ折りたたみ処理を行う collapse.facet ファセットを取得する元を折りたたみ前か後かを指定する(デフォルト:after) ・after 折りたたみ後の結果からファセットを計算 ・before 折りたたみ前の結果からファセットを計算 collapse.threshold 検索結果中に含まれるcollapse.fieldの同値の個数。(>=1、デフォルト:1) 2とするとcollapse.fieldの同じ値が2つまで出現する collapse.maxdocs 折りたたみ処理対象とするドキュメント数の上限(>=0、デフォルト:インデックス されたドキュメント数) 20と指定した場合、折りたたみ前の結果の最初の20件に対して折りたたみ処 理を行い、21件目以降は切り捨てられる collapse.info.doc 検索結果にcollapse_countsのdoc情報を追加する collapse.info.count 検索結果にcollapse_countsのcount情報を追加する collapse.includeCollapsedDocs.fl 折りたたまれたDocumentで取得するフィールドを指定。カンマ区切りで指定可 能。*も利用可能
  11. 11. Copyright © 2010 Seamark, Inc. All Rights Reserved 11 シナリオデータ id 名前 政党名 尊敬する人物 趣味 出身校 年齢 0 菅直人 民主党 東京工業大学 63 1 鳩山由紀夫 民主党 JFK タッチフットボール クラシック音楽 東京大学 スタンフォード大学 63 2 谷垣禎一 自民党 サイクリング 東京大学 65 3 小沢一郎 民主党 大久保利通 原敬 囲碁 釣り 読書 慶應義塾大学 68 4 蓮舫 民主党 青山学院大学 42 5 小泉進次郎 自民党 JFK 野球 サーフィン ゴルフ 読書 関東学院大学 コロンビア大学 29 6 渡辺善美 みんなの党 読書 早稲田大学 中央大学 58 7 麻生太郎 自民党 読書 ゴルフ 学習院大学 70 8 石破茂 自民党 料理 読書 遠泳 慶應義塾大学 53 9 谷亮子 民主党 日本体育大学 35 Copyright(c) 2010 RONDHUIT Co.,Ltd. All Rights Reserved. 2010年9月、Wikipediaや各政治家のホームページを参考に作成しました。
  12. 12. Copyright © 2010 Seamark, Inc. All Rights Reserved 12 Field Collapsingの検索結果例 (result部分) Collapse前 Collapse後
  13. 13. Copyright © 2010 Seamark, Inc. All Rights Reserved 13 Field Collapsingの検索結果例 (折りたたまれたドキュメント) collapse.fieldで指定したフィールド名 折りたたまれた(代表を含まない)ド キュメントのリスト resultに出てきたドキュメントのID =代表ドキュメント
  14. 14. Copyright © 2010 Seamark, Inc. All Rights Reserved 14 Field Collapsingの制限事項 • 残念ながらtrunkに採用されず。=>今後メンテナンスがさ れない可能性大 • Distributed Searchを利用するためにはcollapse.fieldに 指定するフィールドの値が同一のものが同一shardに入 っている必要あり。 • collapse.fieldにmultiValuedのフィールドは指定できな い
  15. 15. Copyright © 2010 Seamark, Inc. All Rights Reserved 15 アジェンダ • Field Collapsing / Result Groupingの概要 • Field Collapsing(SOLR-236)について • Result Grouping(SOLR-1682=>trunk)について • Field CollapsingとResult Groupingの違いについて
  16. 16. Copyright © 2010 Seamark, Inc. All Rights Reserved 16 Result Groupingの利用方法 • trunkのSolrを利用(Solr4.0) • QueryComponentの機能として実装されているため設 定は不要
  17. 17. Copyright © 2010 Seamark, Inc. All Rights Reserved 17 Result Groupingの動作 • グループ化検索を行うために、2回の検索を行っている • 検索にヒットするドキュメントセットの中のトップグループ( 0〜start+rowsに収まるグループ)を探すフェーズ(フェー ズ1) • トップグループに含まれるドキュメントをgroup.limit件分 収集するフェーズ(フェーズ2)
  18. 18. Copyright © 2010 Seamark, Inc. All Rights Reserved 18 Result Groupingの動作 グループキー SearchGroup "民主党" "自民党" "みんなの党" groupMap SearchGroup orderedGroups フェーズ1 グループキー SearchGroup Doc"民主党" "自民党" "みんなの党" groupMap SearchGroupDoc collector collector collector フェーズ2 Copyright(c) 2010 RONDHUIT Co.,Ltd. All Rights Reserved.
  19. 19. Copyright © 2010 Seamark, Inc. All Rights Reserved 19 Result Groupingのパラメータ パラメータ 説明 group trueで結果グルーピング機能を使う group.field グループ化フィールド。indexedまたはExternalFileFieldのようなValueSource を持つフィールド型のフィールド。内部ではgroup.funcと合体される。複数指定 可 group.func 関数クエリのユニーク値を基準にグループ化。複数指定可 group.query 指定されたクエリにマッチするドキュメントをグループ化。複数指定可 rows 検索結果グループ数。デフォルトは10 group.limit グループ内のドキュメント数。デフォルトは1 sort グループ間のソート基準。グループ内でもっとも高くランクされたドキュメントをこ のソート基準でソートしてグループ間のランクとする。デフォルトはスコアの降順 group.sort グループ内のソート基準。デフォルトはsortと同じ Copyright(c) 2010 RONDHUIT Co.,Ltd. All Rights Reserved.
  20. 20. Copyright © 2010 Seamark, Inc. All Rights Reserved 20 Result Groupingの検索結果例 (group.field指定) group.fieldで指定したフィールド名 複数指定時はこのブロックが複数あり group.fieldの値 検索ヒット数=折りたたみ前のヒット数 numFound:折りたたまれた数 グループ内のドキュメント group.limitで取得件数指定可能 Copyright(c) 2010 RONDHUIT Co.,Ltd. All Rights Reserved.
  21. 21. Copyright © 2010 Seamark, Inc. All Rights Reserved 21 Result Groupingの検索結果例 (group.query) group.queryで指定したquery 検索ヒット数=折りたたみ前のヒット数 Copyright(c) 2010 RONDHUIT Co.,Ltd. All Rights Reserved.
  22. 22. Copyright © 2010 Seamark, Inc. All Rights Reserved 22 Result Groupingの制限事項(2010/11/17現在) • Distributed Searchは未対応 • 総グループ数が不明 ヒット件数はグループ化前の件数のみ取得可能 ファセットもグループ化前の件数 • multiValued フィールドでのグループ化は未対応 • SolrJサポート未対応
  23. 23. Copyright © 2010 Seamark, Inc. All Rights Reserved 23 アジェンダ • Field Collapsing / Result Groupingの概要 • Field Collapsing(SOLR-236)について • Result Grouping(SOLR-1682=>trunk)について • Field CollapsingとResult Groupingの違いについて
  24. 24. Copyright © 2010 Seamark, Inc. All Rights Reserved 24 Field CollapsingとResult Groupingの違い Field Collapsing Result Grouping 総グループ数 △(不明、リファクタリング前は取得でき た) ☓(不明) 様々なグループ化条件 △(インデックスになければ不可) ◎(query、funcが利用可) 複数グループ化条件 ☓ ○(複数のフィールド指定可能) 検索結果 ☓(扱いにくい) △(まだ改良される可能性あり) ファセット ○(グループ化前後どちらも取得可 能。) △(グループ化前のみ) ハイライト ○ ○ 分散検索 △(前提条件あり) ☓ Solrのバージョン 1.4.1 Trunk(4.0) 性能 いまいち まあまあ(まだまだ改善予定) 将来性 なし 大いにあり ※2010/11/17現在
  25. 25. Copyright © 2010 Seamark, Inc. All Rights Reserved 25 結論 • Result Groupingの実装を待てる場合は待つ ※実装に積極的に参加する手もある • 今すぐ分散検索したければField Collapsingを利用して みる • 利用しない手を考える。。。

×