KeyMatch API

概要

KeyMatch APIは、Fess のキーマッチ(検索キーワードと結果の紐付け)を管理するためのAPIです。 特定のキーワードに対して特定のドキュメントを上位表示させることができます。

ベースURL

/api/admin/keymatch

エンドポイント一覧

メソッド パス 説明
GET /settings キーマッチ一覧取得
GET /setting/{id} キーマッチ取得
POST /setting キーマッチ作成
PUT /setting キーマッチ更新
DELETE /setting/{id} キーマッチ削除

キーマッチ一覧取得

リクエスト

GET /api/admin/keymatch/settings

パラメーター

パラメーター 必須 説明
size Integer いいえ 1ページあたりの件数(デフォルト: 25。paging.page.size の設定値)
page Integer いいえ ページ番号(1から開始、デフォルト: 1)
term String いいえ 検索キーワードによる絞り込み(ワイルドカード一致)
query String いいえ マッチ条件クエリによる絞り込み(ワイルドカード一致)

レスポンス

{
  "response": {
    "status": 0,
    "settings": [
      {
        "id": "keymatch_id_1",
        "term": "download",
        "query": "title:download OR content:download",
        "maxSize": 10,
        "boost": 10.0,
        "versionNo": 1
      }
    ],
    "total": 5
  }
}

注釈

total には絞り込み条件に一致する総件数が設定されます(現在のページの件数ではありません)。 各設定オブジェクトには上記のフィールドに加えて、値が設定されている場合に virtualHostcreatedBycreatedTimeupdatedByupdatedTime が含まれます。

キーマッチ取得

リクエスト

GET /api/admin/keymatch/setting/{id}

レスポンス

{
  "response": {
    "status": 0,
    "setting": {
      "id": "keymatch_id_1",
      "term": "download",
      "query": "title:download OR content:download",
      "maxSize": 10,
      "boost": 10.0,
      "createdBy": "admin",
      "createdTime": 1700000000000,
      "updatedBy": "admin",
      "updatedTime": 1700000000000,
      "versionNo": 1
    }
  }
}

注釈

versionNo は楽観ロック用のバージョン番号です。キーマッチを更新する際は、取得時に得られた versionNo をリクエストボディに指定してください。指定したIDが存在しない場合はエラーが返されます。

キーマッチ作成

リクエスト

POST /api/admin/keymatch/setting
Content-Type: application/json

リクエストボディ

{
  "term": "pricing",
  "query": "url:*/pricing* OR title:pricing",
  "maxSize": 5,
  "boost": 20.0
}

フィールド説明

フィールド 必須 説明
term String はい 検索キーワード(最大100文字)
query String はい マッチ条件クエリ(最大長は form.admin.max.input.size の設定値に従う)
maxSize Integer はい 最大表示件数(0以上の整数。管理画面での初期値は10)
boost Float はい ブースト値(管理画面での初期値は100.0)
virtualHost String いいえ 仮想ホスト名(最大1000文字。仮想ホストごとにキーマッチを切り替える場合に指定)

注釈

maxSizeboost はAPI経由では必須です。初期値は管理画面のフォームに表示される値であり、 APIでは適用されません。省略した場合はバリデーションエラーになります。 なお、 createdBycreatedTime はリクエストで指定してもサーバー側で上書きされます。

レスポンス

{
  "response": {
    "status": 0,
    "id": "new_keymatch_id",
    "created": true
  }
}

キーマッチ更新

リクエスト

PUT /api/admin/keymatch/setting
Content-Type: application/json

リクエストボディ

{
  "id": "existing_keymatch_id",
  "term": "pricing",
  "query": "url:*/pricing* OR title:pricing OR content:price",
  "maxSize": 10,
  "boost": 15.0,
  "versionNo": 1
}

フィールド説明

作成時のフィールド( termquerymaxSizeboostvirtualHost )に加えて、 以下のフィールドを指定します。

フィールド 必須 説明
id String はい 更新対象のキーマッチID(最大1000文字)
versionNo Integer はい 楽観ロック用のバージョン番号。取得時に得られた値を指定

レスポンス

{
  "response": {
    "status": 0,
    "id": "existing_keymatch_id",
    "created": false
  }
}

キーマッチ削除

リクエスト

DELETE /api/admin/keymatch/setting/{id}

レスポンス

{
  "response": {
    "status": 0
  }
}

使用例

製品ページのキーマッチ作成

curl -X POST "http://localhost:8080/api/admin/keymatch/setting" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "term": "product features",
       "query": "url:*/products/* AND (title:features OR content:features)",
       "maxSize": 10,
       "boost": 15.0
     }'

サポートページのキーマッチ

curl -X POST "http://localhost:8080/api/admin/keymatch/setting" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "term": "help",
       "query": "url:*/support/* OR url:*/help/* OR url:*/faq/*",
       "maxSize": 5,
       "boost": 20.0
     }'

参考情報