すべてのプロダクト
Search
ドキュメントセンター

Artificial Intelligence Recommendation:フィーチャー構成

最終更新日:Nov 12, 2025

このトピックでは、ユーザーまたはアイテムのフィーチャーの読み込みを構成する方法について説明します。

フィーチャー構成は、構成概要の FeatureConfs に対応します。FeatureConfs は、キーがシナリオ名である Map[string]object 構造です。シナリオごとに異なるフィーチャーを構成できます。

機能の読み込み

ファインランキングの前に、フィーチャーソースからユーザーまたはアイテムのフィーチャーデータを取得する必要があります。

場合によっては、取得したフィーチャーデータにさらなる処理が必要になることがあります。たとえば、既存のフィーチャーから新しいフィーチャーを生成したり、既存のフィーチャーを組み合わせたりすることができます。

フィーチャーは、Hologres、Redis、Tablestore (OTS)、PAI-FeatureStore などの複数のデータソースから読み込むことができます。

Hologres

構成例

{
    "FeatureConfs": {
        "scene_name": {
            "AsynLoadFeature": true,
            "FeatureLoadConfs": [
                {
                    "FeatureDaoConf": {
                        "AdapterType": "hologres",
                        "HologresName": "holo-pai",
                        "FeatureKey": "user:uid",
                        "UserFeatureKeyName": "user_id",
                        "HologresTableName": "recom_user_features_processed_holo_online",
                        "UserSelectFields": "rids_count,sex,alladdfriendnum,allpayrosenum",
                        "FeatureStore": "user"
                    },
                    "Features": []
                },
                {
                    "FeatureDaoConf": {
                        "AdapterType": "hologres",
                        "HologresName": "holo-pai",
                        "ItemFeatureKeyName": "item_id",
                        "FeatureKey": "item:id",
                        "HologresTableName": "recom_user_features_processed_holo_online",
                        "ItemSelectFields": "rids_count as rids2_count,sex as guestsex,alladdfriendnum as alladdfriendnum2",
                        "FeatureStore": "item"
                    },
                    "Features": []
                }
            ]
        }
    }
}

  • AsynLoadFeature: フィーチャーを非同期で読み込むかどうかを指定します。これにより、複数の `FeatureLoadConfs` が構成されている場合に、フィーチャーを同時に読み込むことができます。

FeatureLoadConfs/FeatureDaoConf

フィールド名

タイプ

必須

説明

AdapterType

string

はい

データソースのタイプ。値を `hologres` に設定します。

HologresName

string

はい

`HologresConfs` で定義された Hologres インスタンスのカスタム名。例: `holo_info`。

FeatureKey

string

はい

フィーチャーテーブルのクエリに使用されるフィーチャー。

`FeatureKey` は、ルックアップに使用するユーザーまたはアイテムのフィールドを指定します。たとえば、`user:uid` はユーザーから `uid` プロパティの値を取得し、`item:id` はアイテムから `id` プロパティの値を取得します。

UserFeatureKeyName

string

はい

ユーザーフィーチャーテーブルのプライマリキーフィールド。

ItemFeatureKeyName

string

はい

アイテムフィーチャーテーブルのプライマリキーフィールド。

HologresTableName

string

はい

Hologres のフィーチャーテーブルの名前。

UserSelectFields

string

いいえ

取得するユーザーフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。

ItemSelectFields

string

いいえ

取得するアイテムフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。

FeatureStore

string

はい

取得したフィーチャーが保存される場所。有効な値: `user` または `item`。

CacheSize

integer

いいえ

ローカルにキャッシュするフィーチャーエントリの数。デフォルト値は 0 で、データがキャッシュされないことを意味します。

CacheTime

integer

いいえ

ローカルにキャッシュされたフィーチャーエントリの有効期限 (秒単位)。このパラメーターは `CacheSize` が 0 より大きい場合にのみ有効です。デフォルト値は 3600 です。

PAI-FeatureStore

PAI-FeatureStore プラットフォームの構成方法の詳細については、「FeatureStore の概要」をご参照ください。

構成例

{
    "FeatureConfs": {
        "scene_name": {
            "AsynLoadFeature": true,
            "FeatureLoadConfs": [
                {
                    "FeatureDaoConf": {
                        "AdapterType": "featurestore",
                        "FeatureStoreName": "pairec-fs",
                        "FeatureKey": "user:uid",
                        "FeatureStoreModelName": "rank_v1",
                        "FeatureStoreEntityName": "user",
                        "FeatureStore": "user"
                    }
                }
            ]
        }
    }
}

FeatureLoadConfs/FeatureDaoConf

フィールド名

タイプ

必須

説明

AdapterType

string

はい

データソースのタイプ。値を `featurestore` に設定します。

FeatureStoreName

string

はい

`FeatureStoreConfs` で定義された FeatureStore インスタンスのカスタム名。例: `pairec-fs`。

FeatureKey

string

はい

フィーチャーテーブルのクエリに使用されるフィーチャー。

`FeatureKey` は、ルックアップに使用するユーザーまたはアイテムのフィールドを指定します。たとえば、`user:uid` はユーザーから `uid` プロパティの値を取得し、`item:id` はアイテムから `id` プロパティの値を取得します。

FeatureStoreModelName

string

はい

PAI-FeatureStore のモデルフィーチャー名。

FeatureStoreEntityName

string

はい

PAI-FeatureStore のエンティティ名。

FeatureStore

string

はい

取得したフィーチャーが保存される場所。有効な値: `user` または `item`。

CacheSize

integer

いいえ

ローカルにキャッシュするフィーチャーエントリの数。デフォルト値は 0 で、データがキャッシュされないことを意味します。

CacheTime

integer

いいえ

ローカルにキャッシュされたフィーチャーエントリの有効期限 (秒単位)。このパラメーターは `CacheSize` が 0 より大きい場合にのみ有効です。デフォルト値は 3600 です。

上記の構成では、rank_v1 モデルフィーチャーからユーザーエンティティのすべてのフィーチャーを取得します。アイテムエンティティのフィーチャーを取得するには、パラメーターを次のように構成します:

{
  "FeatureConfs" :{
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [{
        "FeatureDaoConf": {
          "AdapterType": "featurestore",
          "FeatureStoreName": "pairec-fs",
          "FeatureKey": "item:id",
          "FeatureStoreModelName": "rank_v1",
          "FeatureStoreEntityName": "item",
          "FeatureStore": "item"
        }
      }]
    }
  }
}

ただし、多くの場合、特定のフィーチャービューからフィーチャーのサブセットのみを取得する必要があります。たとえば、user_table_preprocess_all_feature_v1 という名前のフィーチャービューからすべてのフィーチャーを取得し、それらをユーザープロパティに保存するには、パラメーターを次のように構成します:

{
  "FeatureConfs" :{
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [{
        "FeatureDaoConf": {
          "AdapterType": "featurestore",
          "FeatureStoreName": "pairec-fs",
          "FeatureKey": "user:uid",
          "FeatureStoreViewName": "user_table_preprocess_all_feature_v1",
          "UserSelectFields": "*",
          "FeatureStore": "user"
        }
      },
      {
        "FeatureDaoConf": {
          "AdapterType": "featurestore",
          "FeatureStoreName": "pairec-fs",
          "FeatureKey": "item:id",
          "FeatureStoreViewName": "item_table_preprocess_all_feature_v1",
          "ItemSelectFields": "author,duration,category",
          "FeatureStore": "item"
        }
      }]
    }
  }
}

フィールド名

タイプ

必須

説明

FeatureStoreViewName

string

はい

フィーチャービューの名前。

UserSelectFields

string

いいえ

取得するユーザーフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。

ItemSelectFields

string

いいえ

取得するアイテムフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。

TableStore (OTS)

構成例

{
    "FeatureConfs": {
        "scene_name": {
            "AsynLoadFeature": true,
            "FeatureLoadConfs": [
                {
                    "FeatureDaoConf": {
                        "AdapterType": "tablestore",
                        "TableStoreName": "tablestore_info",
                        "FeatureKey": "user:uid",
                        "UserFeatureKeyName": "uid",
                        "TableStoreTableName": "",
                        "UserSelectFields": "*",
                        "FeatureStore": "user"
                    },
                    "Features": []
                },
                {
                    "FeatureDaoConf": {
                        "AdapterType": "tablestore",
                        "TableStoreName": "tablestore_info",
                        "FeatureKey": "item:id",
                        "ItemFeatureKeyName": "item_id",
                        "TableStoreTableName": "",
                        "ItemSelectFields": "*",
                        "FeatureStore": "item"
                    },
                    "Features": []
                }
            ]
        }
    }
}

FeatureLoadConfs/FeatureDaoConf

フィールド名

タイプ

必須

説明

AdapterType

string

はい

データソースのタイプ。値を `tablestore` に設定します。

TableStoreName

string

はい

`TableStoreConfs` で定義された Tablestore インスタンスのカスタム名。例: `tablestore_info`。

FeatureKey

string

はい

フィーチャーテーブルのクエリに使用されるフィーチャー。

`FeatureKey` は、ルックアップに使用するユーザーまたはアイテムのフィールドを指定します。たとえば、`user:uid` はユーザーから `uid` プロパティの値を取得し、`item:pair_id` はアイテムから `pair_id` プロパティの値を取得します。

UserFeatureKeyName

string

いいえ

ユーザーフィーチャーテーブルのプライマリキーフィールド。

ItemFeatureKeyName

string

いいえ

アイテムフィーチャーテーブルのプライマリキーフィールド。

TableStoreTableName

string

はい

Tablestore のフィーチャーテーブルの名前。

UserSelectFields

string

いいえ

取得するユーザーフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。

ItemSelectFields

string

いいえ

取得するアイテムフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。

FeatureStore

string

はい

取得したフィーチャーが保存される場所。有効な値: `user` または `item`。

CacheSize

integer

いいえ

ローカルにキャッシュするフィーチャーエントリの数。デフォルト値は 0 で、データがキャッシュされないことを意味します。

CacheTime

integer

いいえ

ローカルにキャッシュされたフィーチャーエントリの有効期限 (秒単位)。このパラメーターは `CacheSize` が 0 より大きい場合にのみ有効です。デフォルト値は 3600 です。

Redis

Redis は柔軟なデータストレージを提供します。キーバリュー (KV) フォーマットを使用でき、値は CSV または JSON フォーマットにすることができます。また、HASH フォーマットを使用して、フィールド名を指定することですべてまたは一部のデータを取得することもできます。

構成例

{
    "FeatureConfs": {
        "scene_name": {
            "AsynLoadFeature": true,
            "FeatureLoadConfs": [
                {
                    "FeatureDaoConf": {
                        "AdapterType": "redis",
                        "RedisName": "user_redis",
                        "RedisPrefix": "UF_V2_",
                        "FeatureKey": "user:uid",
                        "FeatureStore": "user",
                        "RedisDataType": "string",
                        "RedisFieldType": "csv",
                        "RedisValueDelimeter": ","
                    },
                    "Features": []
                },
                {
                    "FeatureDaoConf": {
                        "AdapterType": "redis",
                        "RedisName": "item_redis",
                        "RedisPrefix": "IF_V2_FM_",
                        "FeatureKey": "item:id",
                        "FeatureStore": "item",
                        "RedisDataType": "string",
                        "RedisFieldType": "json"
                    },
                    "Features": [ ]
                }
            ]
        }
    }
}

上記の例では、ユーザーフィーチャーとアイテムフィーチャーは両方とも KV フォーマットで取得されます。ただし、ユーザーフィーチャーは `RedisValueDelimeter` で指定された区切り文字を持つ CSV として保存され、アイテムフィーチャーは JSON として保存されます。

次の例は、HASH フォーマットでフィーチャーデータを取得する方法を示しています。

{
    "FeatureConfs": {
        "scene_name": {
            "AsynLoadFeature": true,
            "FeatureLoadConfs": [
                {
                    "FeatureDaoConf": {
                        "AdapterType": "redis",
                        "RedisName": "user_redis",
                        "RedisPrefix": "UF_V2_",
                        "FeatureKey": "user:uid",
                        "FeatureStore": "user",
                        "RedisDataType": "hash",
                        "UserSelectFields": "*"
                    },
                    "Features": []
                },
                {
                    "FeatureDaoConf": {
                        "AdapterType": "redis",
                        "RedisName": "item_redis",
                        "RedisPrefix": "IF_V2_FM_",
                        "FeatureKey": "item:id",
                        "FeatureStore": "item",
                        "RedisDataType": "hash",
                        "ItemSelectFields": "city,author,duration"
                    },
                    "Features": []
                }
            ]
        }
    }
}

FeatureLoadConfs/FeatureDaoConf

フィールド名

タイプ

必須

説明

AdapterType

string

はい

データソースのタイプ。値を `redis` に設定します。

RedisName

string

はい

`RedisConfs` で定義された Redis インスタンスのカスタム名。例: `redis_info`。

RedisPrefix

string

はい

キープレフィックス。

FeatureKey

string

はい

フィーチャーテーブルのクエリに使用されるフィーチャー。

`FeatureKey` は、ルックアップに使用するユーザーまたはアイテムのフィールドを指定します。たとえば、`user:uid` はユーザーから `uid` プロパティの値を取得し、`item:pair_id` はアイテムから `pair_id` プロパティの値を取得します。

UserSelectFields

string

いいえ

取得するユーザーフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。このパラメーターは `RedisDataType` が `hash` に設定されている場合にのみ有効です。

ItemSelectFields

string

いいえ

取得するアイテムフィーチャー。`*` を使用してすべてのフィーチャーを取得するか、`feature1,feature2` のようにカンマ区切りのリストでフィーチャーを指定します。このパラメーターは `RedisDataType` が `hash` に設定されている場合にのみ有効です。

FeatureStore

string

はい

取得したフィーチャーが保存される場所。有効な値: `user` または `item`。

RedisDataType

string

はい

データストレージフォーマット。

2. hash は HASH を指定します。

RedisFieldType

string

いいえ

有効な値は `csv` または `json` です。このパラメーターは `RedisDataType` が `string` に設定されている場合にのみ有効です。

RedisValueDelimeter

string

いいえ

データ区切り文字。このパラメーターは `RedisFieldType` が `csv` に設定されている場合にのみ有効です。

CacheSize

integer

いいえ

ローカルにキャッシュするフィーチャーエントリの数。デフォルト値は 0 で、データがキャッシュされないことを意味します。

CacheTime

integer

いいえ

ローカルにキャッシュされたフィーチャーエントリの有効期限 (秒単位)。このパラメーターは `CacheSize` が 0 より大きい場合にのみ有効です。デフォルト値は 3600 です。

フィーチャー変換

フィーチャーが読み込まれた後、それらを変換したり新しいフィーチャーを生成したりして、さらに処理する必要がある場合があります。エンジンには、以下で説明するいくつかの組み込みフィーチャー変換タイプがあります。

FeatureType (変換タイプ)

説明

new_feature

完全に新しいフィーチャーを生成します。

raw_feature

既存のフィーチャーに基づいて新しいフィーチャーを作成します。

compose_feature

複合フィーチャー。複数の既存のフィーチャーを組み合わせて新しいフィーチャーを生成します。

new_feature

  1. day_h と week_day フィーチャーは、ユーザーフィーチャーによく使用されます。これら 2 つのフィーチャーはリアルタイムで生成されます。

{
    "FeatureType": "new_feature",
    "FeatureName": "day_h",
    "Normalizer": "hour_in_day",
    "FeatureStore": "user"
}

{
    "FeatureType": "new_feature",
    "FeatureName": "week_day",
    "Normalizer": "weekday",
    "FeatureStore": "user"
}
  • FeatureName: 生成されるフィーチャーの名前。

  • FeatureStore: フィーチャーがユーザー側とアイテム側のどちらに保存されるかを指定します。有効な値: user または item。

  1. 乱数を生成します。乱数は、確率に基づく判断に使用されることがあります。次の構成では、[0, 100) の範囲の値を持つ rand_int_v フィーチャーが生成されます。

{
    "FeatureType": "new_feature",
    "FeatureName": "rand_int_v",
    "Normalizer": "random",
    "FeatureStore": "user"
}
  1. 静的フィールドを生成します。次の構成では、値が ALRC の alg という名前のフィーチャーが生成されます。

{
    "FeatureType": "new_feature",
    "FeatureStore": "user",
    "Normalizer": "const_value",
    "FeatureValue": "ALRC",
    "FeatureName": "alg"
}
  1. 式に基づいてフィーチャーを生成します。式は https://github.com/Knetic/govaluate ライブラリによって解釈および実行されます。

次の構成では、recall_name が配列内にあるかどうかをチェックすることで、is_retarget という名前のブール値フィーチャーが生成されます。ブール値フィーチャーの値は 1 または 0 で表されます。

{
    "FeatureType": "new_feature",
    "FeatureStore": "item",
    "FeatureSource": "item:recall_name",
    "Normalizer": "expression",
    "Expression": "recall_name in ('retarget_u2i','realtime_retarget_click')",
    "FeatureName": "is_retarget"
}

  • Expression: 式のルールの詳細については、「https://github.com/Knetic/govaluate/blob/master/MANUAL.md」をご参照ください。

  • FeatureSource: フィーチャー値のソースを指定します。たとえば、item:recall_name は、値がアイテムの recall_name フィーチャーから取得されることを示します。式に複数のアイテムプロパティが含まれている場合は、FeatureSource を省略できます。この場合、すべてのアイテムプロパティが計算のために式に渡されます。

  • currentTime を使用して、現在のシステムの Unix タイムスタンプ (秒単位) を参照できます。

  1. 式 (V2) に基づいてフィーチャーを生成します。このバージョンは、より柔軟な構文と優れたパフォーマンスを提供します。式を解釈して実行するために https://github.com/expr-lang/expr ライブラリを使用します。これは、式を使用するための推奨されるメソッドです。

上記の式は次のように書き換えることができます:

{
    "FeatureType": "new_feature",
    "FeatureStore": "item",
    "Normalizer": "expr",
    "Expression": "item.recall_name in ['retarget_u2i','realtime_retarget_click']",
    "FeatureName": "is_retarget"
}

  • Expression: 式のルールの詳細については、「https://expr-lang.org/docs/language-definition」をご参照ください。

  • アイテム側のフィーチャーには、item. プレフィックスを追加できます。ユーザー側のフィーチャーには、user. プレフィックスを追加できます。item.recall_name は、アイテム側の recall_name フィーチャーを参照します。FeatureStore が item に設定されている場合、式でユーザー側のフィーチャーを参照することもできます。

  • currentTime を使用して、現在のシステムの Unix タイムスタンプ (秒単位) を参照できます。

ユーザー側とアイテム側の両方のフィーチャーを使用するには、次の例をご参照ください:

{
    "FeatureType": "new_feature",
    "FeatureStore": "item",
    "Normalizer": "expr",
    "Expression": "user.user_index - item.index",
    "FeatureName": "index_delta"
}

raw_feature

既存のフィーチャーを変換します。

{
    "FeatureType": "raw_feature",
    "FeatureStore": "user",
    "FeatureSource": "user:age",
    "RemoveFeatureSource": true,
    "FeatureName": "age_v2"
}
  • この構成は、ユーザーの age フィーチャーに基づいて age_v2 という名前の新しいフィーチャーを生成します。age フィーチャーの値が age_v2 に割り当てられます。RemoveFeatureSource パラメーターは、元のソースフィーチャー (age) を削除するかどうかを決定します。

  • user:age はユーザー側のフィーチャーを使用します。アイテム側のフィーチャーを使用するには、item:city のように指定します。

compose_feature

複合フィーチャーを生成します。

{
    "FeatureType": "compose_feature",
    "FeatureStore": "item",
    "FeatureSource": "user:category,item:author",
    "FeatureName": "item_author"
}
  • `FeatureSource` で複数のフィーチャーを参照するには、ユーザーフィーチャーに `user:` プレフィックスを追加し、アイテムフィーチャーに `item:` プレフィックスを追加します。

  • 新しいフィーチャー `item_author` は、ソースフィーチャーの値をアンダースコア (`_`) で結合することによって生成されます。たとえば、`user:category` の値が `category1` で、`item:author` の値が `author1` の場合、`item_author` の値は `category1_author1` になります。

  • また、new_feature の式 (V2) メソッドを使用して、このタイプの複合フィーチャーをより柔軟に作成することもできます。

組み込み式関数

new_feature セクションでは、式ベースのメソッドは式を使用して新しいフィーチャーを生成します。エンジンは、式で直接使用できる次の組み込みユーザー定義関数も提供します。

関数名

関数シグネチャ

説明

getString

getString(a, b)

a が空の値でない場合は a を返します。それ以外の場合は b を返します。

trim

trim(str, cutset)

`str` から `cutset` に含まれるすべての先頭および末尾の文字を削除します。

trimPrefix

trimPrefix(str, cutset)

`str` から `cutset` に含まれる先頭の文字を削除します。

replace

replace(str, old, new)

`str` 内の `old` 文字列の出現箇所を `new` 文字列に置き換えます。

round

round(number)

round(number, places)

  • `round(number)`: 最も近い整数に丸めます。例: `round(123.5)` は `124.0` を返します。

  • `round(number, places)`: 指定された小数点以下の桁数に数値を切り捨てます。例: `round(123.456, 2)` は `123.45` を返します。

hash32

hash32(str)

murmur3.Sum32 を使用するハッシュアルゴリズム。

log

log(number)

数値の自然対数 (底 e) を計算します。

log10

log10(number)

数値の常用対数 (底 10) を計算します。

log2

log2(number)

数値の二進対数 (底 2) を計算します。

pow

pow(base, exponent)

数値のべき乗を計算します。

s2CellID

s2CellID(lat,lng)

s2CellID(lat, lng, level)

  • 説明: 指定された緯度と経度の座標の S2 セル ID を計算します。

  • パラメーター:

    1. lat (float): 緯度。

    2. lng (float): 経度。

    3. level (int, オプション): S2 レベル。レベルが高いほど、セルは小さくなり、精度が高くなります。このパラメーターが指定されていない場合、デフォルト値は 15 です。

  • 戻り値: int。指定されたレベルでの座標の S2 セル ID です。

s2CellNeighbors

s2CellNeighbors(lat,lng)

s2CellNeighbors(lat,lng, level)

  • 説明: 指定された緯度経度座標とそのすべての隣接セルの S2 セル ID のリストを取得します。

  • パラメーター: s2CellID と同じです。

  • ロジック: まず重心のセル ID を計算し、次にそのセルのすべての隣接セル (通常は 8 つ) を見つけ、最後に重心セル ID と隣接セル ID のマージされたリストを返します。

  • 戻り値: []int。9 つのセル ID (1 つの重心 + 8 つの隣接セル) を含む整数セグメント。

geoHash

geoHash(lat, lng)

geoHash(lat, lng, precision)

  • 説明: 指定された緯度と経度を Geohash 文字列にエンコードします。

  • パラメーター:

    1. lat (float): 緯度。

    2. lng (float): 経度。

    3. precision (int, オプション): Geohash 文字列の長さ (精度)。指定しない場合、デフォルト値は 6 です。

  • 戻り値: string。座標の Geohash エンコーディングです。

geoHashWithNeighbors

geoHashWithNeighbors(lat,lng)

geoHashWithNeighbors(lat, lng, precision)

  • 説明: 指定された緯度経度座標とそのすべての隣接エリアの Geohash のリストを取得します。

  • パラメーター: geoHash と同じです。

  • ロジック: 重心の Geohash を計算し、その 8 つの隣接セルの Geohash を見つけ、重心と隣接セルの Geohash のマージされたリストを返します。

  • 戻り値: []string。9 つの Geohash 文字列 (1 つの重心 + 8 つの隣接セル) を含む文字列セグメント。

haversine

haversine(lng1, lat1, lng2, lat2)

  • 説明: Haversine の数式を使用して、2 つの緯度経度ポイント間の球面距離を計算します。この数式は、短距離に対して高い精度を提供します。

  • パラメーター:

    1. lng1 (float): 最初のポイントの経度。

    2. lat1 (float): 最初のポイントの緯度。

    3. lng2 (float): 2 番目のポイントの経度。

    4. lat2 (float): 2 番目のポイントの緯度。

  • 戻り値: float64。2 つのポイント間の距離 (キロメートル単位)。これは、コードが earthRadiusKm 定数を使用するためです。

sphereDistance

sphereDistance(lng1, lat1, lng2, lat2)

  • 説明: 球面余弦定理を使用して、2 つの緯度経度ポイント間の球面距離を計算します。

  • パラメーター: haversine と同じです。

  • 戻り値: float64。2 つのポイント間の距離 (これもキロメートル単位)。