4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マーケットプレイス版Oracle WebCenter Content For OCIのセマンティック検索をREST APIから実行してみよう

Posted at

この記事について

OCIマーケットプレイスより提供されているOracle WebCenter Content 14c For OCI(以下、WCC14c For OCI)では、Oracle Database 23aiのAI Vector Searchを活用したセマンティック検索が利用できます。このセマンティック検索をREST APIから利用する方法を紹介します

なお、セマンティック検索の有効化条件や設定手順についての説明は割愛します。以下のQiita記事をご確認いただけると幸いです

今回の検証環境は以下のとおりです

  • マーケットプレイス版WCC14c For OCI バージョン25.8.1
  • Oracle Database 23ai (ATP-Serverless)
  • セマンティック検索機能は有効化済(上記Qiita記事参照)

マーケットプレイス版Oracle WebCenter Content For OCIとは

マーケットプレイス版Oracle WebCenter Content For OCIは、Oracle Cloud Infrastructure上のVMベースのソリューションとして提供されます。WCC For OCIを使用すると、顧客は数回クリックするだけで環境をセットアップでき、クラウド上でコンテンツの管理・検索・共有などをすぐに利用開始できます

詳細は製品ドキュメントおよび概要紹介資料をご確認ください

WCC14c For OCIのセマンティック検索

従来型の全文検索と違い、セマンティック検索ではユーザーが入力した自然言語を解析し、意味的な近さに基づいて関連性の高いコンテンツを返します。これにより、検索キーワードの正確な入力に時間をかけずに、必要な情報を効率よく検索可能です

image.png

REST APIが定義されていないサービスの呼び出し方法

最初に、セマンティック検索のREST APIの有無を確認するため、製品ドキュメントを確認します。

全文検索やメタデータ検索のためのREST APIは提供されていますが、セマンティック検索(Semantic Search)のためのREST APIは提供されていないことが確認できます

このような場合に利用するのが、Generic RESTと言われるREST APIです

名前の通り、RESTのGETリクエストを実行するAPIと、POSTリクエストを実行するAPIがそれぞれ定義されています。この時に実行するのが、WCCのサービスになります

WCCのサービスとは?
WCCのサービスについては、製品ドキュメントに記載があります。日本語翻訳版はこちらです

<※日本語翻訳版より一部引用>
サービスとは、Oracle WebCenter Contentシステムで実行される関数またはプロシージャです。クライアントがOracle WebCenter Contentのシステムと通信したりOracle WebCenter Content Serverのデータベースにアクセスするには、Oracle WebCenter Contentのサービスをコールする(サービス・リクエストを行う)ことが唯一の方法です。

具体的にいうと、WebブラウザでWCCを利用する際のURLのパラメータとして追加されるIdcService=XXXXXXサービス に相当します。以下のスクリーンショットの場合、IdcService=DOC_INFOの「DOC_INFO」がサービスになります

image.png

また、サービスの実行には、パラメータ(サービス・パラメータ) が必要になる場合があります。上記スクリーンショットの場合、dID=577およびdDocName=WCC000956がパラーメータに相当します。なお、パラメータの要否はサービス毎に異なります

セマンティック検索を実行するサービスを確認する

セマンティック検索は、Redwood UIの検索メニューからAI検索を選択して実行します。この時のブラウザのURLはIdcService=REDWOODUIのままで、セマンティック検索のサービスがわかりません。
このような場合はWebブラウザの開発ツール(Developer Tools)等を利用し、セマンティック検索実行時のURLを確認します。以下確認例です

image.png

サービス名は GET_SEMANTIC_SEARCH_RESULTS、問い合わせ文のパラメータはprompt=XXXXX であることを確認します。なお、promptパラメータに設定する問い合わせ文はURL用にエンコードされています

Generic RESTを利用してセマンティック検索を実行する

Generic RESTを利用してセマンティック検索を実行します。今回はGeneric GET APIを使います

実行時に指定するサービスはGET_SEMANTIC_SEARCH_RESULTSです。問い合わせ文は「Oracle Fusion Middlewareの開発計画についておしえて」とします。なお、promptパラメータに設定する問い合わせ文はURL用にエンコードされています

以下、crulコマンドの実行例です

curl -k \
'https://wcchost:port/documents/wcc/api/v1.1/generic/invoke?IdcService=GET_SEMANTIC_SEARCH_RESULTS&prompt=Oracle%20Fusion%20Middleware%E3%81%AE%E9%96%8B%E7%99%BA%E8%A8%88%E7%94%BB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%8A%E3%81%97%E3%81%88%E3%81%A6' \
-H 'Authorization: <Auth info>'

レスポンスは以下のイメージです。SearchResults にセマンティック検索の実行結果がスコアの高い順にソートされて返ってくることが確認できます

{
    "securityFilter": "Internal, Public",
    "resultCount": "20",
    "thresholdScore": "50",
    "refreshSubjects": "",
    "localizedForResponse": "1",
    "dUser": "demouser",
    "UseForwardOnlyCursor": "",
    "baseTable": "ots1HybridText",
    "IdcService": "GET_SEMANTIC_SEARCH_RESULTS",
    "UserDateFormat": "iso8601",
    "UserTimeZone": "UTC",
    "IsQueryObjectPersistent": "",
    "sortOrder": "DESC",
    "sortField": "jt.score",
    "changedSubjects": "",
    "dDocAccount": "",
    "prompt": "Oracle Fusion Middlewareの開発計画についておしえて",
    "SearchMode": "document",
    "search_text": "Oracle Fusion Middlewareの開発計画についておしえて",
    "searchConfig": "{\"hybrid_index_name\":\"ots1HybridText_IN\",\"vector\":{\"search_text\":\"Oracle Fusion Middlewareの開発計画についておしえて\",\"search_mode\":\"DOCUMENT\",\"aggregator\":\"MAX\"},\"return\":{\"topN\":20,\"values\":[\"rowid\",\"score\"]}}",
    "idcToken": "1757059574050:758259513182CAD7506A4165DCD531F4",
    "UserAttribInfo": [
        {
            "dUserName": "demouser",
            "AttributeInfo": "account,Sales/Div1,3,account,#none,15,role,Employee,15,role,guest,15,role,authenticated,15"
        }
    ],
    "SearchResults": [
        {
            "dDocName": "WCC000024",
            "dDocTitle": "fusion-middleware-statement-of-direction-ja",
            "dDocType": "Document",
            "dSecurityGroup": "Public",
            "dInDate": "2025-03-31 06:46:27Z",
            "xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
            "dRevisionID": "1",
            "dDocCreator": "weblogic",
            "dWebExtension": "pdf",
            "dDocCreatedDate": "2025-03-31 06:47:18Z",
            "dCreateDate": "2025-03-31 06:47:18Z",
            "dOriginalName": "fusion-middleware-statement-of-direction-ja.pdf",
            "dFormat": "application/pdf",
            "dDocAuthor": "weblogic",
            "VaultFileSize": "423983",
            "dDocLastModifier": "weblogic",
            "xWebFlag": "idcnull",
            "dOutDate": "",
            "dExtension": "pdf",
            "dDocLastModifiedDate": "2025-03-31 06:47:18Z",
            "URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000024.pdf",
            "WebFileSize": "423983",
            "dDocOwner": "weblogic",
            "dID": "28",
            "dDocAccount": "idcnull",
            "xIdcProfile": "idcnull",
            "score": "92.63"
        },
        {
            "dDocName": "WCC000025",
            "dDocTitle": "WCCForOCI_NewFeatures",
            "dDocType": "Document",
            "dSecurityGroup": "Public",
            "dInDate": "2025-03-31 06:54:33Z",
            "xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
            "dRevisionID": "1",
            "dDocCreator": "demouser",
            "dWebExtension": "pdf",
            "dDocCreatedDate": "2025-03-31 06:55:34Z",
            "dCreateDate": "2025-03-31 06:55:34Z",
            "dOriginalName": "WCCForOCI_NewFeatures.pptx",
            "dFormat": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
            "dDocAuthor": "demouser",
            "VaultFileSize": "5970420",
            "dDocLastModifier": "demouser",
            "xWebFlag": "idcnull",
            "dOutDate": "",
            "dExtension": "pptx",
            "dDocLastModifiedDate": "2025-03-31 06:55:34Z",
            "URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000025.pdf",
            "WebFileSize": "5006306",
            "dDocOwner": "demouser",
            "dID": "29",
            "dDocAccount": "idcnull",
            "xIdcProfile": "idcnull",
            "score": "88.16"
        },
        {
            "dDocName": "WCC000725",
            "dDocTitle": "wcc release note",
            "dDocType": "Document",
            "dSecurityGroup": "Public",
            "dInDate": "2025-05-29 02:12:00Z",
            "xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
            "dRevisionID": "1",
            "dDocCreator": "weblogic",
            "dWebExtension": "pdf",
            "dDocCreatedDate": "2025-05-29 02:13:48Z",
            "dCreateDate": "2025-05-29 02:13:48Z",
            "dOriginalName": "release-notes-webcenter-content.pdf",
            "dFormat": "application/pdf",
            "dDocAuthor": "weblogic",
            "VaultFileSize": "151522",
            "dDocLastModifier": "weblogic",
            "xWebFlag": "idcnull",
            "dOutDate": "",
            "dExtension": "pdf",
            "dDocLastModifiedDate": "2025-05-29 02:13:48Z",
            "URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000725.pdf",
            "WebFileSize": "151522",
            "dDocOwner": "weblogic",
            "dID": "540",
            "dDocAccount": "idcnull",
            "xIdcProfile": "idcnull",
            "score": "87.15"
        },

<------------- 一部省略 ------------->

        {
            "dDocName": "WCC000693",
            "dDocTitle": "デモ資料その2",
            "dDocType": "Document",
            "dSecurityGroup": "Public",
            "dInDate": "2025-07-24 03:31:00Z",
            "xLibraryGUID": "62B66F5E201272A25CEB0049BD197B93",
            "dRevisionID": "3",
            "dDocCreator": "weblogic",
            "dWebExtension": "pdf",
            "dDocCreatedDate": "2025-05-02 06:46:14Z",
            "dCreateDate": "2025-07-24 03:31:34Z",
            "dOriginalName": "デモ資料その2.pptx",
            "dFormat": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
            "dDocAuthor": "weblogic",
            "VaultFileSize": "50586",
            "dDocLastModifier": "weblogic",
            "xWebFlag": "idcnull",
            "dOutDate": "",
            "dExtension": "pptx",
            "dDocLastModifiedDate": "2025-07-24 03:31:34Z",
            "URL": "/cs/groups/public/documents/document/d2nj/mdaw/~edisp/wcc000693.pdf",
            "WebFileSize": "53268",
            "dDocOwner": "weblogic",
            "dID": "572",
            "dDocAccount": "idcnull",
            "xIdcProfile": "idcnull",
            "score": "84.16"
        }
    ]
}

まとめ

WCC14c For OCIのセマンティック検索をREST APIから実行する方法を紹介しました。REST APIが提供されていないサービスを実行する場合は、Generic REST(GETもしくはPOST)の利用をご検討ください。

なお、REST APIが定義済のサービスであっても、このGeneric RESTで実行することができます。結果、WCCの「ほぼすべて」のサービスがこのGeneric RESTで実行できます。覚えておくと便利だと思います

マーケットプレイス版WCC14c For OCIの関連ドキュメント

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?