続:Apache Solrでファセット表示のタネ作り

今回は、以下の企画の続編です。

digitalnagasaki.hatenablog.com

が… facet.pivotという機能を使った方が断然楽であるようですので、それを使って みんなで翻刻サーチに資料単位での絞り込み機能をつけてみたところです。 たとえば、以下のリンクのような感じです。

みん翻検索 by SAT

これはとっても簡単で、たとえば以下のようなURLでローカルのApache Solrにアクセスしてみると、

http://127.0.0.1:8983/solr/minhon3/select?facet.pivot=project_st,collection_st,entry_st&facet=on&fl=entry&q=textConn%3A%E9%98%BF%E5%BC%A5%E9%99%80&row=-1&facet.pivot.mincount=1

以下のような結果を得られます。

{
  "ResponseHeader": {
    "Status": 0,
    "QTime": 4
    "Params": {
      "Q": "textConn: 阿弥陀"
      "Facet.pivot": "project_st, collection_st, entry_st"
      "Fl", "entry",
      "Row": "- 1"
      "Facet", "we"
      "Facet.pivot.mincount": "1"}}
  "Response": { "numFound" 4, "start" 0, "Doc": [
      {
        "Entry": "[富士山 図]"},
      {
        "Entry": "じ し ん 百万 遍"},
      {
        "Entry": "じ し ん 百万 遍"},
      {
        "Entry": "兩 界 圖 位 (京都 東 寺觀 智 院 藏 本)"}]
  }
  "Facet_counts": {
    "Facet_queries": {}
    "Facet_fields": {}
    "Facet_ranges": {}
    "Facet_intervals": {}
    "Facet_heatmaps": {}
    "Facet_pivot": {
      "Project_st, collection_st, entry_st": [{
          "Field": "project_st"
          "Value": "翻 刻 石 本 コ レ ク シ ョ ン!"
          "Count": 3
          "pivot":[{
              "Field": "collection_st"
              "Value": "ス テ ー ジ 1"
              "Count": 1,
              "pivot":[{
                  "Field": "entry_st"
                  "Value": "じ し ん 百万 遍"
                  "Count": 1}]},
            {
              "Field": "collection_st"
              "Value": "ス テ ー ジ 2"
              "Count": 1,
              "pivot":[{
                  "Field": "entry_st"
                  "Value": "じ し ん 百万 遍"
                  "Count": 1}]},
            {
              "Field": "collection_st"
              "Value": "ス テ ー ジ 5"
              "Count": 1,
              "pivot":[{
                  "Field": "entry_st"
                  "Value": "[富士山 図]"
                  "Count": 1}]}]},
        {
          "Field": "project_st"
          "Value": "日本 の 仏 典 を 翻 刻"
          "Count": 1,
          "pivot":[{
              "Field": "collection_st"
              "Value": "大 正 新 脩 大 藏經 図 像 編"
              "Count": 1,
              "pivot":[{
                  "Field": "entry_st"
                  "Value": "兩 界 圖 位 (京都 東 寺觀 智 院 藏 本)"
                  "Count": 1}]}]}]}}}

この場合、ピボットとしてデータを取り出せるだけでなく、単なるファセット機能での出力結果と比べて、値と登場数をもう少し便利な形で取り出すことができますね。 こういうものもうまく使えると、検索がより便利になりそうです。

なお、みんなで翻刻サーチでは、検索結果を全部HTMLに変換した上で、jQueryを使って一部非表示にしたりクリックして表示できるようにしたりしています。flaskとの組み合わせだと こういう組み込みはとても楽にできますね。