全部产品
Search
文档中心

Artificial Intelligence Recommendation:Konfigurasi fitur

更新时间:Nov 12, 2025

Topik ini menjelaskan cara mengonfigurasi pemuatan fitur pengguna atau item.

Konfigurasi fitur berkorespondensi dengan FeatureConfs dalam ikhtisar konfigurasi. FeatureConfs merupakan struktur Map[string]object dengan kunci berupa nama skenario. Anda dapat mengonfigurasi fitur yang berbeda untuk skenario yang berbeda.

Memuat fitur

Sebelum fine-ranking, Anda harus mengambil data fitur pengguna atau item dari sumber fitur.

Dalam beberapa kasus, data fitur yang diambil memerlukan pemrosesan lebih lanjut, misalnya dengan menghasilkan fitur baru dari fitur yang sudah ada atau menggabungkan beberapa fitur.

Fitur dapat dimuat dari berbagai sumber data, seperti Hologres, Redis, Tablestore (OTS), dan PAI-FeatureStore.

Hologres

Contoh konfigurasi

{
    "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: Menentukan apakah fitur dimuat secara asinkron. Fitur ini memungkinkan pemuatan fitur secara konkuren ketika beberapa FeatureLoadConfs dikonfigurasi.

FeatureLoadConfs/FeatureDaoConf

Nama bidang

Tipe

Wajib

Deskripsi

AdapterType

string

Ya

Jenis sumber data. Tetapkan nilainya ke `hologres`.

HologresName

string

Ya

Nama kustom instans Hologres yang didefinisikan dalam `HologresConfs`. Misalnya, `holo_info`.

FeatureKey

string

Ya

Fitur yang digunakan untuk mengkueri tabel fitur.

`FeatureKey` menentukan bidang mana dari pengguna atau item yang digunakan untuk pencarian. Misalnya, `user:uid` mengambil nilai properti `uid` dari pengguna, dan `item:id` mengambil nilai properti `id` dari item.

UserFeatureKeyName

string

Ya

Bidang kunci utama tabel fitur pengguna.

ItemFeatureKeyName

string

Ya

Bidang kunci utama tabel fitur item.

HologresTableName

string

Ya

Nama tabel fitur di Hologres.

UserSelectFields

string

Tidak

Fitur pengguna yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`.

ItemSelectFields

string

Tidak

Fitur item yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`.

FeatureStore

string

Ya

Lokasi tempat fitur yang diambil disimpan. Nilai yang valid: `user` atau `item`.

CacheSize

integer

Tidak

Jumlah entri fitur yang di-cache secara lokal. Nilai default adalah 0, yang berarti data tidak di-cache.

CacheTime

integer

Tidak

Waktu kedaluwarsa untuk entri fitur yang di-cache secara lokal, dalam detik. Parameter ini hanya berlaku jika `CacheSize` lebih besar dari 0. Nilai default adalah 3600.

PAI-FeatureStore

Untuk informasi selengkapnya tentang cara mengonfigurasi platform PAI-FeatureStore, lihat Ikhtisar FeatureStore.

Contoh konfigurasi

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

FeatureLoadConfs/FeatureDaoConf

Nama Bidang

Tipe

Wajib

Deskripsi

AdapterType

string

Ya

Jenis sumber data. Tetapkan nilainya ke `featurestore`.

FeatureStoreName

string

Ya

Nama kustom instans FeatureStore yang didefinisikan dalam `FeatureStoreConfs`. Misalnya, `pairec-fs`.

FeatureKey

string

Ya

Fitur yang digunakan untuk mengkueri tabel fitur.

`FeatureKey` menentukan bidang mana dari pengguna atau item yang digunakan untuk pencarian. Misalnya, `user:uid` mengambil nilai properti `uid` dari pengguna, dan `item:id` mengambil nilai properti `id` dari item.

FeatureStoreModelName

string

Ya

Nama fitur model di PAI-FeatureStore.

FeatureStoreEntityName

string

Ya

Nama entitas di PAI-FeatureStore.

FeatureStore

string

Ya

Lokasi tempat fitur yang diambil disimpan. Nilai yang valid: `user` atau `item`.

CacheSize

integer

Tidak

Jumlah entri fitur yang di-cache secara lokal. Nilai default adalah 0, yang berarti data tidak di-cache.

CacheTime

integer

Tidak

Waktu kedaluwarsa untuk entri fitur yang di-cache secara lokal, dalam detik. Parameter ini hanya berlaku jika `CacheSize` lebih besar dari 0. Nilai default adalah 3600.

Konfigurasi di atas mengambil semua fitur entitas pengguna dari fitur model rank_v1. Untuk mengambil fitur entitas item, konfigurasikan parameter sebagai berikut:

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

Namun, sering kali Anda hanya perlu mengambil sebagian fitur dari tampilan fitur tertentu. Misalnya, untuk mengambil semua fitur dari tampilan fitur bernama user_table_preprocess_all_feature_v1 dan menyimpannya dalam properti pengguna, konfigurasikan parameter sebagai berikut:

{
  "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"
        }
      }]
    }
  }
}

Nama bidang

Tipe

Wajib

Deskripsi

FeatureStoreViewName

string

Ya

Nama tampilan fitur.

UserSelectFields

string

Tidak

Fitur pengguna yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`.

ItemSelectFields

string

Tidak

Fitur item yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`.

TableStore(OTS)

Contoh konfigurasi

{
    "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

Nama bidang

Tipe

Wajib

Deskripsi

AdapterType

string

Ya

Jenis sumber data. Tetapkan nilainya ke `tablestore`.

TableStoreName

string

Ya

Nama kustom instans Tablestore yang didefinisikan dalam `TableStoreConfs`. Misalnya, `tablestore_info`.

FeatureKey

string

Ya

Fitur yang digunakan untuk mengkueri tabel fitur.

`FeatureKey` menentukan bidang mana dari pengguna atau item yang digunakan untuk pencarian. Misalnya, `user:uid` mengambil nilai properti `uid` dari pengguna, dan `item:pair_id` mengambil nilai properti `pair_id` dari item.

UserFeatureKeyName

string

Tidak

Bidang kunci utama tabel fitur pengguna.

ItemFeatureKeyName

string

Tidak

Bidang kunci utama tabel fitur item.

TableStoreTableName

string

Ya

Nama tabel fitur di Tablestore.

UserSelectFields

string

Tidak

Fitur pengguna yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`.

ItemSelectFields

string

Tidak

Fitur item yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`.

FeatureStore

string

Ya

Lokasi tempat fitur yang diambil disimpan. Nilai yang valid: `user` atau `item`.

CacheSize

integer

Tidak

Jumlah entri fitur yang di-cache secara lokal. Nilai default adalah 0, yang berarti data tidak di-cache.

CacheTime

integer

Tidak

Waktu kedaluwarsa untuk entri fitur yang di-cache secara lokal, dalam detik. Parameter ini hanya berlaku jika `CacheSize` lebih besar dari 0. Nilai default adalah 3600.

Redis

Redis menyediakan penyimpanan data yang fleksibel. Anda dapat menggunakan format key-value (KV), di mana nilai dapat berupa CSV atau JSON. Anda juga dapat menggunakan format HASH untuk mengambil semua atau sebagian data dengan menentukan nama bidang.

Contoh konfigurasi

{
    "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": [ ]
                }
            ]
        }
    }
}

Pada contoh di atas, fitur pengguna dan fitur item keduanya diambil dalam format KV. Namun, fitur pengguna disimpan sebagai CSV dengan pemisah yang ditentukan oleh RedisValueDelimeter, sedangkan fitur item disimpan sebagai JSON.

Contoh berikut menunjukkan cara mengambil data fitur dalam format 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

Nama bidang

Tipe

Wajib

Deskripsi

AdapterType

string

Ya

Jenis sumber data. Tetapkan nilainya ke `redis`.

RedisName

string

Ya

Nama kustom instans Redis yang didefinisikan dalam `RedisConfs`. Misalnya, `redis_info`.

RedisPrefix

string

Ya

Awalan kunci.

FeatureKey

string

Ya

Fitur yang digunakan untuk mengkueri tabel fitur.

`FeatureKey` menentukan bidang mana dari pengguna atau item yang digunakan untuk pencarian. Misalnya, `user:uid` mengambil nilai properti `uid` dari pengguna, dan `item:pair_id` mengambil nilai properti `pair_id` dari item.

UserSelectFields

string

Tidak

Fitur pengguna yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`. Parameter ini hanya berlaku ketika `RedisDataType` diatur ke `hash`.

ItemSelectFields

string

Tidak

Fitur item yang akan diambil. Gunakan `*` untuk mengambil semua fitur, atau tentukan fitur dalam daftar yang dipisahkan koma, seperti `feature1,feature2`. Parameter ini hanya berlaku ketika `RedisDataType` diatur ke `hash`.

FeatureStore

string

Ya

Lokasi tempat fitur yang diambil disimpan. Nilai yang valid: `user` atau `item`.

RedisDataType

string

Ya

Format penyimpanan data.

2. hash menentukan HASH.

RedisFieldType

string

Tidak

Nilai yang valid adalah `csv` atau `json`. Parameter ini hanya berlaku ketika `RedisDataType` diatur ke `string`.

RedisValueDelimeter

string

Tidak

Pemisah data. Parameter ini hanya berlaku ketika `RedisFieldType` diatur ke `csv`.

CacheSize

integer

Tidak

Jumlah entri fitur yang di-cache secara lokal. Nilai default adalah 0, yang berarti data tidak di-cache.

CacheTime

integer

Tidak

Waktu kedaluwarsa untuk entri fitur yang di-cache secara lokal, dalam detik. Parameter ini hanya berlaku jika `CacheSize` lebih besar dari 0. Nilai default adalah 3600.

Transformasi fitur

Setelah fitur dimuat, Anda mungkin perlu memprosesnya lebih lanjut dengan mentransformasikannya atau menghasilkan fitur baru. Mesin menyediakan beberapa jenis transformasi fitur bawaan, yang dijelaskan di bawah ini.

FeatureType (Jenis transformasi)

Deskripsi

new_feature

Menghasilkan fitur yang benar-benar baru.

raw_feature

Membuat fitur baru berdasarkan fitur yang sudah ada.

compose_feature

Fitur komposit. Menggabungkan beberapa fitur yang sudah ada untuk menghasilkan fitur baru.

new_feature

  1. Fitur day_h dan week_day sering digunakan untuk fitur pengguna. Kedua fitur ini dihasilkan secara real-time.

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

{
    "FeatureType": "new_feature",
    "FeatureName": "week_day",
    "Normalizer": "weekday",
    "FeatureStore": "user"
}
  • FeatureName: Nama fitur yang dihasilkan.

  • FeatureStore: Menentukan apakah fitur disimpan di sisi pengguna atau item. Nilai yang valid: user atau item.

  1. Hasilkan bilangan acak. Bilangan acak kadang-kadang digunakan untuk penilaian berbasis probabilitas. Konfigurasi berikut menghasilkan fitur rand_int_v dengan nilai dalam rentang [0, 100).

{
    "FeatureType": "new_feature",
    "FeatureName": "rand_int_v",
    "Normalizer": "random",
    "FeatureStore": "user"
}
  1. Hasilkan bidang statis. Konfigurasi berikut menghasilkan fitur bernama alg dengan nilai ALRC.

{
    "FeatureType": "new_feature",
    "FeatureStore": "user",
    "Normalizer": "const_value",
    "FeatureValue": "ALRC",
    "FeatureName": "alg"
}
  1. Hasilkan fitur berdasarkan ekspresi. Ekspresi diinterpretasikan dan dieksekusi oleh pustaka https://github.com/Knetic/govaluate.

Konfigurasi berikut menghasilkan fitur boolean bernama is_retarget dengan memeriksa apakah recall_name berada dalam larik. Nilai fitur boolean direpresentasikan oleh 1 atau 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: Untuk informasi selengkapnya tentang aturan ekspresi, lihat https://github.com/Knetic/govaluate/blob/master/MANUAL.md.

  • FeatureSource: Menentukan sumber nilai fitur. Misalnya, item:recall_name menunjukkan bahwa nilai berasal dari fitur recall_name item. Jika ekspresi berisi beberapa properti item, Anda dapat menghilangkan FeatureSource. Dalam hal ini, semua properti item diteruskan ke ekspresi untuk perhitungan.

  • Anda dapat menggunakan currentTime untuk merujuk pada timestamp Unix sistem saat ini dalam detik.

  1. Hasilkan fitur berdasarkan ekspresi (V2). Versi ini menawarkan sintaks yang lebih fleksibel dan kinerja yang lebih baik. Ekspresi diinterpretasikan dan dieksekusi menggunakan pustaka https://github.com/expr-lang/expr. Ini adalah metode yang direkomendasikan untuk menggunakan ekspresi.

Ekspresi sebelumnya dapat ditulis ulang sebagai berikut:

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

  • Expression: Untuk informasi selengkapnya tentang aturan ekspresi, lihat https://expr-lang.org/docs/language-definition.

  • Untuk fitur sisi item, Anda dapat menambahkan awalan item.. Untuk fitur sisi pengguna, Anda dapat menambahkan awalan user.. item.recall_name merujuk pada fitur recall_name di sisi item. Ketika FeatureStore diatur ke item, Anda juga dapat mereferensikan fitur sisi pengguna dalam ekspresi.

  • Anda dapat menggunakan currentTime untuk merujuk pada timestamp Unix sistem saat ini dalam detik.

Untuk menggunakan fitur sisi pengguna dan sisi item sekaligus, lihat contoh berikut:

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

raw_feature

Transformasikan fitur yang sudah ada.

{
    "FeatureType": "raw_feature",
    "FeatureStore": "user",
    "FeatureSource": "user:age",
    "RemoveFeatureSource": true,
    "FeatureName": "age_v2"
}
  • Konfigurasi ini menghasilkan fitur baru bernama age_v2 berdasarkan fitur age pengguna. Nilai fitur age ditetapkan ke age_v2. Parameter RemoveFeatureSource menentukan apakah fitur sumber asli (age) dihapus.

  • user:age menggunakan fitur sisi pengguna. Untuk menggunakan fitur sisi item, Anda akan menentukannya sebagai item:city.

compose_feature

Menghasilkan fitur komposit.

{
    "FeatureType": "compose_feature",
    "FeatureStore": "item",
    "FeatureSource": "user:category,item:author",
    "FeatureName": "item_author"
}
  • Untuk mereferensikan beberapa fitur dalam FeatureSource, tambahkan awalan user: untuk fitur pengguna dan awalan item: untuk fitur item.

  • Fitur baru, item_author, dihasilkan dengan menggabungkan nilai fitur sumber menggunakan garis bawah (_). Misalnya, jika nilai user:category adalah category1 dan nilai item:author adalah author1, maka nilai item_author menjadi category1_author1.

  • Anda juga dapat membuat jenis fitur komposit ini secara lebih fleksibel menggunakan metode ekspresi (V2) untuk new_feature.

Fungsi ekspresi bawaan

Pada bagian new_feature, metode berbasis ekspresi menggunakan ekspresi untuk menghasilkan fitur baru. Mesin juga menyediakan fungsi user-defined bawaan berikut yang dapat Anda gunakan langsung dalam ekspresi.

Nama fungsi

Tanda tangan fungsi

Deskripsi

getString

getString(a, b)

Jika a bukan nilai kosong, mengembalikan a. Jika tidak, mengembalikan b.

trim

trim(str, cutset)

Menghapus semua karakter awal dan akhir dari `str` yang terdapat dalam `cutset`.

trimPrefix

trimPrefix(str, cutset)

Menghapus karakter awal dari `str` yang terdapat dalam `cutset`.

replace

replace(str, old, new)

Mengganti kemunculan string `old` dengan string `new` dalam `str`.

round

round(number)

round(number, places)

  • `round(number)`: Membulatkan ke bilangan bulat terdekat. Misalnya, `round(123.5)` mengembalikan `124.0`.

  • `round(number, places)`: Memotong angka hingga jumlah tempat desimal yang ditentukan. Misalnya, `round(123.456, 2)` mengembalikan `123.45`.

hash32

hash32(str)

Algoritma hash yang menggunakan murmur3.Sum32.

log

log(number)

Menghitung logaritma natural (basis e) dari suatu angka.

log10

log10(number)

Menghitung logaritma umum (basis 10) dari suatu angka.

log2

log2(number)

Menghitung logaritma biner (basis 2) dari suatu angka.

pow

pow(base, exponent)

Menghitung pangkat suatu angka.

s2CellID

s2CellID(lat,lng)

s2CellID(lat, lng, level)

  • Deskripsi: Menghitung ID Sel S2 untuk koordinat lintang dan bujur tertentu.

  • Parameter:

    1. lat (float): Lintang.

    2. lng (float): Bujur.

    3. level (int, opsional): Tingkat S2. Tingkat yang lebih tinggi sesuai dengan sel yang lebih kecil dan presisi yang lebih tinggi. Jika parameter ini tidak disediakan, nilai default adalah 15.

  • Nilai kembalian: int, yaitu ID Sel S2 untuk koordinat pada tingkat yang ditentukan.

s2CellNeighbors

s2CellNeighbors(lat,lng)

s2CellNeighbors(lat,lng, level)

  • Deskripsi: Mengambil daftar ID Sel S2 untuk koordinat lintang-bujur tertentu dan semua sel yang berdekatan.

  • Parameter: Sama seperti s2CellID.

  • Logika: Pertama-tama menghitung ID Sel dari pusat, lalu menemukan semua tetangga sel tersebut (biasanya 8), dan akhirnya mengembalikan daftar gabungan ID sel pusat dan ID sel tetangga.

  • Nilai kembalian: []int, segmen integer yang berisi 9 ID Sel (1 pusat + 8 tetangga).

geoHash

geoHash(lat, lng)

geoHash(lat, lng, precision)

  • Deskripsi: Mengkodekan lintang dan bujur tertentu menjadi string Geohash.

  • Parameter:

    1. lat (float): Lintang.

    2. lng (float): Bujur.

    3. precision (int, opsional): Panjang (presisi) string Geohash. Jika tidak disediakan, nilai default adalah 6.

  • Nilai kembalian: string, yaitu kode Geohash dari koordinat tersebut.

geoHashWithNeighbors

geoHashWithNeighbors(lat,lng)

geoHashWithNeighbors(lat, lng, precision)

  • Deskripsi: Mengambil daftar Geohash untuk koordinat lintang-bujur tertentu dan semua area yang berdekatan.

  • Parameter: Sama seperti geoHash.

  • Logika: Menghitung Geohash dari pusat, menemukan Geohash dari 8 tetangganya, lalu mengembalikan daftar gabungan Geohash pusat dan tetangga.

  • Nilai kembalian: []string, segmen string yang berisi 9 string Geohash (1 pusat + 8 tetangga).

haversine

haversine(lng1, lat1, lng2, lat2)

  • Deskripsi: Menghitung jarak bola antara dua titik lintang-bujur menggunakan rumus Haversine. Rumus ini memberikan akurasi tinggi untuk jarak pendek.

  • Parameter:

    1. lng1 (float): Bujur titik pertama.

    2. lat1 (float): Lintang titik pertama.

    3. lng2 (float): Bujur titik kedua.

    4. lat2 (float): Lintang titik kedua.

  • Nilai kembalian: float64, jarak antara dua titik dalam kilometer. Hal ini karena kode menggunakan konstanta earthRadiusKm.

sphereDistance

sphereDistance(lng1, lat1, lng2, lat2)

  • Deskripsi: Menghitung jarak bola antara dua titik lintang-bujur menggunakan hukum cosinus bola.

  • Parameter: Sama seperti haversine.

  • Nilai kembalian: float64, jarak antara dua titik, juga dalam kilometer.