LoginSignup
0
0

More than 3 years have passed since last update.

Solr DIHでテーブル結合して、取込みしてみる

Posted at

前提

前回投稿からの発展型ですので、DIHに関する設定等は省略する。
なので、データはPostgreSQLのチュートリアルにあるDVDレンタルデータを使用する。
結合は、フィルムテーブルにカテゴリテーブルを結合する。但し、チュートリアルのにER図より、フィルム・カテゴリーテーブルを介して結合する必要がある。

SQLで書くと

select f.film_id id, ct.name category_name, f.title, f.description
from film f
inner join film_category fc
  on fc.film_id = f.film_id
inner join category ct
  on ct.category_id = fc.category_id

となる取込みは、

db-data-configでは

        <entity name="film" query="select * from film" >
          <field column="film_id" name="id" />
          <field column="title" name="title" />
          <field column="description" name="description" />
          <entity name="film_category" query="select category_id from film_category where film_id='${film.film_id}'"  >
            <entity name="category" query="select name from category where category_id='${film_category.category_id}'" >
              <field column="name" name="category_name" />
            </entity>
          </entity>
        </entity>

となるみたいです。

データフィールドの追加

今回追加したデータフィールドは、「category_name」だけだったと思います。(作業メモを取ってなく、後から思い出して書きました)
注意:前回の投稿で「city」フィールドを追加しましたが、今回未使用となり、「city」を削除しておかないと取込みでエラーになります。

取込み

取込みは、前回の投稿と同じです。

クエリーで確認

qに「category_name:family && description:student」と入力し、「Execute Query」ボタンをクリックする。
検索結果は、以下の通り。

{
  "responseHeader":{
    "status":0,
    "QTime":4,
    "params":{
      "q":"category_name:family && description:student",
      "_":"1562462403529"}},
  "response":{"numFound":9,"start":0,"docs":[
      {
        "description":"A Emotional Documentary of a Student And a Girl who must Build a Boat in Nigeria",
        "title":["Blanket Beverly"],
        "id":"80",
        "category_name":"Family",
        "_version_":1638303411597213696},
      {
        "description":"A Astounding Reflection of a Explorer And a Dentist who must Pursue a Student in Nigeria",
        "title":["Jedi Beneath"],
        "id":"479",
        "category_name":"Family",
        "_version_":1638303422835851264},
      {
        "description":"A Taut Story of a Pioneer And a Squirrel who must Battle a Student in Soviet Georgia",
        "title":["House Dynamite"],
        "id":"437",
        "category_name":"Family",
        "_version_":1638303421771546624},
      {
        "description":"A Insightful Display of a Database Administrator And a Student who must Build a Hunter in Berlin",
        "title":["Movie Shakespeare"],
        "id":"603",
        "category_name":"Family",
        "_version_":1638303426342289408},
      {
        "description":"A Thrilling Epistle of a Boy And a Boat who must Find a Student in Soviet Georgia",
        "title":["Pittsburgh Hunchback"],
        "id":"682",
        "category_name":"Family",
        "_version_":1638303428390158336},
      {
        "description":"A Fateful Tale of a Database Administrator And a Squirrel who must Discover a Student in Soviet Georgia",
        "title":["Virtual Spoilers"],
        "id":"946",
        "category_name":"Family",
        "_version_":1638303435516280832},
      {
        "description":"A Awe-Inspiring Tale of a Girl And a Madman who must Outgun a Student in A Shark Tank",
        "title":["Hocus Frida"],
        "id":"419",
        "category_name":"Family",
        "_version_":1638303421262987264},
      {
        "description":"A Fanciful Character Study of a Student And a Explorer who must Succumb a Composer in An Abandoned Mine Shaft",
        "title":["Killer Innocent"],
        "id":"498",
        "category_name":"Family",
        "_version_":1638303423327633408},
      {
        "description":"A Thrilling Panorama of a Pastry Chef And a Secret Agent who must Overcome a Student in A Manhattan Penthouse",
        "title":["Spartacus Cheaper"],
        "id":"824",
        "category_name":"Family",
        "_version_":1638303432338046976}]
  }}

考えたこと

今回は、リファレンスガイドの内容を試してたかったのでentityのネストになりましたが、entityの「query」属性にjoinを書いたらダメかな!?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0