NTT DATA REAL INTELLIGENCE with Agilityのビッグデータソリューション
  • Customer Stories
  • Solutions
    • Solution一覧
    • ユースケース
  • Column
  • Our Thought
  • Contact
English
EnglishNTT DATA Trusted Global Innovator
04

MarkLogic Column多段な検索

MLについて
ニルセン太河
目次 [
表示非表示
]
  • はじめに
  • 多段な検索について
  • 検索例の概要
  • 検索処理のイメージ
  • サンプルデータ構成
  • 検索の方法
    • 1.データ登録
    • 2.検索の実施
    • 3.実行結果の確認
  • まとめ

はじめに

本稿では、MarkLogicに格納されているデータに対して、XQueryによる多段な検索方法の例をご紹介します。

多段な検索について

リレーショナルデータベースでは、SQLのJOIN句を使用したテーブルの結合が使われます。一方でMarkLogicなどのNoSQLデータベースにはテーブルという概念はありません。問い合わせ言語であるXQueryにおいてもSQLのJOIN句に該当するものがないため、データを結合する場合は数回の検索を行って結合する処理を組み立てる必要があります。

ここでは、XQueryでデータを結合する方法を紹介します。

検索例の概要

検索の例とする内容は以下になります。

  • 店舗名"店舗A"を検索キーワードとして店舗情報を検索し、抽出した店舗IDに紐づく商品情報を検索して、店舗名・店舗ID・商品名・金額を表示する。

XQueryの処理は以下のような考え方になります。

  1. 1. 店舗情報データに対して、店舗名”店舗A"で検索を行い、店舗情報を取得する。
  2. 2. 商品情報データに対して、上記1で取得した店舗IDに一致するデータを検索する。
  3. 3. 上記1と2で取得した店舗情報と、商品情報を結果として表示する。

検索処理のイメージ

サンプルデータ構成

店舗情報のXMLデータ

店舗情報データ:「StoreName要素の値が"店舗A"」

商品情報のXMLデータ

店舗A(StoreCode要素の値が"T123456789")の商品として2件追加します。

商品情報データ1:「JANName要素の値が"炭酸A ペットボトル"」

商品情報データ2:「JANName要素の値が"お茶A ペットボトル"」

このほか抽出対象外のデータとして、店舗Bの店舗情報1件と商品情報1件を追加します。

検索の方法

1.データ登録

店舗情報のデータ、店舗A(/shop/dataA.xml)と店舗B(/shop/dataB.xml)の2件を登録します。以下のXQueryをクエリコンソールで実行します。

商品情報のデータ、店舗Aの商品情報2件(/JAN/data1.xml、/JAN/data2.xml)と店舗Bの商品情報1件(/JAN/data3.xml)の合計3件を登録します。 以下のXQueryをクエリコンソールで実行します。

クエリコンソール上でデータを登録した結果は以下になります。

店舗情報2件と商品情報3件の合計5件のデータが格納されたことを確認します。

2.検索の実施

実際に検索するXQueryの例を以下に示します。

出力する項目は、店舗情報の店舗名・商品情報の店舗ID・商品情報の商品名・商品情報の金額の4項目を表示します。今回は、検索にcts:search関数、データの絞り込みにcts:directory-query関数、条件の一致にcts:element-value-query関数を使用します。

3.実行結果の確認

商品情報データ3件のうち、店舗Aの店舗IDに一致する商品情報が2件出力されます。

クエリコンソール上で実行した結果は以下となります。

まとめ

本稿の内容をまとめます。

  • XQueryは、SQLのJOIN句のようなデータの結合をサポートしていません。
  • 本稿では、検索関数やFLOWR構文を利用してXQueryでも記述次第でデータの結合ができることを紹介しました。

今回使用した関数の他に、cts:uris関数による検索、コレクションを使用してcts:collection-query関数でデータを絞る方法などがありますので、ユースケースに合わせて実装することをおすすめします。

  1. NTT DATA REAL INTELLIGENCE with Agilityのビッグデータソリューション
  2. Solution
  3. MarkLogic(マークロジック)
  4. コラム一覧
  5. 多段な検索

Contact

本取組みに関するお問い合わせは
下記までご連絡ください。
株式会社NTTデータ
第一金融事業本部
 金融グローバルITサービス事業部 
ABLER推進担当

お問い合わせフォーム
ABLER | We see what others don't
  • TOP
  • Customer Stories
  • Use Cases
  • Our Thought
  • Solutions
Intelligent Data Fusion
  • - MarkLogic
  • - DataDiscovery™
Intelligent Analysis
  • - iTreasure for Trade Services
  • - XBRL
Others
  • - OpenCanvas
  • - Consent Wallet®
Intelligent Search
  • - iTreasure for Intelligent Search
  •  
Intelligent Know Your 3rd Party
  • - iCrawler®
  • - iTreasure for Intelligent Know Your
    3rd Party
  • - iTreasure for Intelligent HRM
Intelligent Data Fusion
  • - MarkLogic
  • - DataDiscovery™
Intelligent Search
  • - iTreasure for Intelligent Search
Intelligent Analysis
  • - iTreasure for Trade Services
  • - XBRL
Intelligent Know Your 3rd Party
  • - iCrawler®
  • - iTreasure for Intelligent Know Your
    3rd Party
  • - iTreasure for Intelligent HRM
Others
  • - OpenCanvas
  • - Altemista®
  • - Consent Wallet®
  • Tips
  • Talent Catalog
  • Column
  • Demo
  • リンク・免責事項
  • プライバシーポリシー
  • サイトのご利用条件
NTT DATA Trusted Global Innovator
Copyright © 2018 NTT DATA Corporation