Mesin PAI-Rec menyediakan beberapa template filter bawaan, termasuk User2ItemExposureFilter, ItemStateFilter, dan AdjustCountFilter.
Konfigurasi filter
Anda dapat mengonfigurasi filter dengan menyesuaikan parameter FilterConfs dalam kode contoh berikut. Parameter FilterConfs adalah array objek yang mendefinisikan beberapa kebijakan filter.
Ikhtisar konfigurasi filter umum
Berikut ini menjelaskan konfigurasi umum yang digunakan oleh berbagai filter. Konfigurasi ini tidak diulang dalam deskripsi rinci setiap filter pada topik ini.
Contoh konfigurasi:
"FilterConfs":[
{
"Name":"",
"FilterType":"",
"Dimension":"",
"DaoConf":{},
"AdjustCountConfs":[{}],
"ItemStateDaoConf":{},
"FilterParams":[{}],
"DiversityDaoConf":{},
"FilterVal":{}
}
]Parameter | Tipe | Diperlukan | Deskripsi |
Name | string | Ya | Nama kustom dari filter. Anda dapat menggunakan nama tersebut saat mengonfigurasi parameter FilterNames. |
FilterType | string | Ya | Tipe filter bawaan untuk mesin. Nilai yang valid:
|
Dimension | string | Tidak | Dimensi item. |
DaoConf | DaoConfig | Tidak | Informasi tentang tabel sumber. |
AdjustCountConfs | Tidak | Konfigurasi filter PriorityAdjustCountFilter. | |
ItemStateDaoConf | Tidak | Konfigurasi filter ItemStateFilter. | |
FilterParams | Tidak | Konfigurasi kondisi kontekstual. |
User2ItemExposureFilter
Pemblokiran eksposur diperlukan dalam banyak skenario bisnis untuk mencegah item direkomendasikan secara berulang. Dalam hal ini, eksposur merujuk pada pseudo-eksposur.
Karena latensi log waktu nyata, item yang terpapar tidak dapat segera diidentifikasi. Oleh karena itu, item yang dikembalikan oleh mesin rekomendasi dianggap sebagai item pseudo-terpapar.
Mesin PAI-Rec digunakan untuk membaca dan menulis data pseudo-eksposur. Data eksposur nyata diperoleh dari log waktu nyata pengguna dan ditulis ke database menggunakan mesin komputasi waktu nyata seperti Apache Flink. Kemudian, PAI-Rec dapat mengonsumsi data tersebut.
Tabel berikut menjelaskan konfigurasi parameter umum dari sumber data yang berbeda untuk User2ItemExposureFilter.
Parameter | Tipe | Diperlukan | Deskripsi |
Name | string | Ya | Nama kustom dari filter. |
FilterType | string | Ya | Tipe filter. Atur nilainya menjadi User2ItemExposureFilter. |
MaxItems | int | Ya | Jumlah maksimum batch item terbaru. Parameter ini setara dengan limit ${MaxItems} dalam pernyataan SQL. MaxItems menentukan jumlah maksimum batch, bukan jumlah maksimum item. Satu batch item dikembalikan untuk permintaan rekomendasi. |
TimeInterval | int | Ya | Periode waktu untuk mengambil item berdasarkan timestamp. Unit: detik. |
WriteLog | bool | Ya | Menentukan apakah akan menulis log eksposur. |
ClearLogIfNotEnoughScene | string | Tidak | Menentukan skenario di mana data tabel eksposur akan dihapus. |
GenerateItemDataFuncName | string | Tidak | Fungsi yang digunakan untuk menulis data item ke tabel eksposur. Jika parameter ini dibiarkan kosong, fungsi bawaan mesin PAI-Rec digunakan. Dalam hal ini, hanya ID item yang dikembalikan. |
WriteLogExcludeScenes | []string | Tidak | Menentukan skenario di mana log eksposur tidak ditulis. |
Hologres
"FilterConfs" :[
{
"Name": "holo_exposure_filter",
"FilterType": "User2ItemExposureFilter",
"MaxItems": 100,
"TimeInterval": 172800,
"WriteLog": true,
"DaoConf":{
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "exposure_history"
}
}
]Parameter DaoConf
Parameter | Tipe | Diperlukan | Deskripsi |
AdapterType | string | Ya | Tipe sumber data. Atur nilainya menjadi hologres. |
HologresName | string | Ya | Nama kustom sumber data yang ditentukan dalam parameter HologresConfs. Contoh: holo_info. |
HologresTableName | string | Ya | Nama tabel eksposur. |
Anda dapat menentukan parameter time_to_live_in_seconds sesuai dengan kebutuhan bisnis Anda untuk mendefinisikan tabel eksposur.
BEGIN;
CREATE TABLE "exposure_history" (
"uid" text NOT NULL,
"item" text NOT NULL,
"create_time" int4 NOT NULL,
PRIMARY KEY ("uid","create_time")
);
CALL SET_TABLE_PROPERTY('"exposure_history"', 'orientation', 'column');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'clustering_key', '"uid","create_time"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'segment_key', '"create_time"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'bitmap_columns', '"uid","item"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'dictionary_encoding_columns', '"uid","item"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'time_to_live_in_seconds', '172800');
comment on table "exposure_history" is 'tabel yang menyimpan catatan eksposur';
COMMIT;ApsaraDB for Redis
"FilterConfs" :[
{
"Name": "redis_exposure_filter",
"FilterType": "User2ItemExposureFilter",
"MaxItems": 100,
"TimeInterval": 172800,
"WriteLog": true,
"DaoConf":{
"AdapterType": "redis",
"RedisName": "redis_info",
"RedisPrefix": "exposure_"
}
}
]Parameter DaoConf
Parameter | Tipe | Diperlukan | Deskripsi |
AdapterType | string | Ya | Tipe sumber data. Atur nilainya menjadi redis. |
RedisName | string | Ya | Nama kustom sumber data yang ditentukan dalam parameter RedisConfs. Contoh: redis_info. |
RedisPrefix | string | Tidak | Awalan kunci untuk data eksposur. Kunci terdiri dari nilai RedisPrefix dan ID unik (UID) pengguna. |
Tablestore
"FilterConfs" :[
{
"Name": "ots_exposure_filter",
"FilterType": "User2ItemExposureFilter",
"MaxItems": 100,
"TimeInterval": 172800,
"WriteLog": true,
"DaoConf":{
"AdapterType": "tablestore",
"TableStoreName": "tablestore_info",
"TableStoreTableName": "exposure_history"
}
}
]Parameter DaoConf
Parameter | Tipe | Diperlukan | Deskripsi |
AdapterType | string | Ya | Tipe sumber data. Nilai yang valid: hologres, mysql, dan tablestore. |
TableStoreName | string | Ya | Nama kustom sumber data yang ditentukan dalam parameter TableStoreConfs. Contoh: tablestore_info. |
TableStoreTableName | string | Ya | Nama tabel eksposur. |
Tabel eksposur didefinisikan menggunakan parameter berikut:
time_to_live_in_seconds: siklus hidup data. Anda harus menentukan nilai kustom untuk parameter ini.
Parameter | Kategori | Tipe | Deskripsi | Contoh |
user_id | Kunci utama | string | UID pengguna. | 10944750 |
auto_id | Kunci utama | integer | Kolom auto-increment. | |
item_ids | Properti | string | ID item. Beberapa ID item dipisahkan dengan koma (,). Saat beberapa item terpapar secara bersamaan, sistem akan memasukkan satu rekaman dengan ID item tersebut. | 17019277,17019278 |
User2ItemCustomFilter
Anda perlu menyediakan tabel kustom pengguna-ke-item (U2I) untuk menyaring data.
Tablestore
"FilterConfs" :[
{
"Name": "u2i_custom_filter",
"FilterType": "User2ItemCustomFilter",
"DaoConf":{
"AdapterType": "tablestore",
"TableStoreName": "tablestore_info",
"TableStoreTableName": "u2i_table"
}
}
]Parameter DaoConf
Parameter | Tipe | Diperlukan | Deskripsi |
AdapterType | string | Ya | Tipe sumber data. Nilai yang valid: hologres, mysql, dan tablestore. |
TableStoreName | string | Ya | Nama kustom sumber data yang ditentukan dalam parameter TableStoreConfs. Contoh: tablestore_info. |
TableStoreTableName | string | Ya | Nama tabel eksposur. |
Tabel eksposur didefinisikan menggunakan parameter berikut.
Parameter | Kategori | Tipe | Deskripsi | Contoh |
user_id | Kunci primer | string | UID dari pengguna. | 10.944.750 |
item_ids | Properti | string | ID item. Beberapa ID item dipisahkan dengan koma (,). | 1.701.927.7,1.701.927.8 |
AdjustCountFilter
AdjustCountFilter digunakan untuk mengacak urutan item yang dikembalikan oleh tautan recall, kemudian menyimpan sejumlah item tertentu.
Contoh konfigurasi:
"FilterConfs" :[
{
"Name": "adjust_count_filter",
"FilterType": "AdjustCountFilter",
"ShuffleItem": true,
"RetainNum": 500
}
]Parameter | Tipe | Diperlukan | Deskripsi |
ShuffleItem | string | Ya | Menentukan apakah akan mengacak item yang dikembalikan oleh tautan recall. |
RetainNum | string | Ya | Jumlah item yang ingin Anda pertahankan. |
Filter Penyesuaian Prioritas
PriorityAdjustCountFilter digunakan untuk mengontrol jumlah item yang dipilih dari hasil yang dikembalikan oleh tautan recall berdasarkan skor. Setiap tautan recall mengurutkan item yang direkomendasikan berdasarkan skor mereka.
Contoh konfigurasi:
"FilterConfs" :[
{
"Name": "priority_adjust_count_filter",
"FilterType": "PriorityAdjustCountFilter",
"AdjustCountConfs" :[
{
"RecallName" :"recall_1",
"Count" :125,
"Type" : "accumulator"
},
{
"RecallName" :"recall_2",
"Count" :250,
"Type" : "accumulator"
},
{
"RecallName" :"recall_3",
"Count" :400,
"Type" : "accumulator"
}
]
}
]Parameter | Tipe | Diperlukan | Deskripsi |
Nama | string | Ya | Nama kustom dari filter. |
FilterType | string | Ya | Tipe filter. Atur nilai menjadi PriorityAdjustCountFilter. |
RecallName | string | Ya | Nama tautan recall. |
AdjustCountConfs | json array | Ya | Konfigurasi filter PriorityAdjustCountFilter. |
| int | Ya | Jumlah maksimum item yang dipilih dari hasil yang dikembalikan oleh tautan recall. |
| string | Tidak | Tipe penyesuaian angka. Nilai yang valid: accumulator dan fix. accumulator:
fix:
|
ItemStateFilter
ItemStateFilter digunakan untuk menyaring item yang dikembalikan oleh tautan recall berdasarkan statusnya. Status item dapat berubah secara real-time. Dalam kebanyakan kasus, tabel tertentu digunakan untuk menyimpan status item. Dalam hal ini, status item perlu di-query secara real-time sebelum penyaringan.
Hologres
"FilterConfs" :[
{
"Name": "ItemStateFilter",
"FilterType": "ItemStateFilter",
"ItemStateDaoConf":{
"AdapterType": "hologres",
"HologresName": "",
"HologresTableName": "",
"ItemFieldName" : "",
"WhereClause": "",
"SelectFields" :""
},
"FilterParams" :[]
}
]Parameter ItemStateDaoConfig
Parameter | Tipe | Diperlukan | Deskripsi |
AdapterType | string | Ya | Tipe sumber data. Nilai yang valid: hologres, mysql, dan tablestore. |
HologresName | string | Ya | Nama kustom sumber data yang ditentukan dalam parameter HologresConfs. Contoh: holo_info. |
HologresTableName | string | Ya | Nama tabel yang menyimpan status item dalam instance Hologres. |
ItemFieldName | string | Ya | Kunci utama tabel yang menyimpan status item. |
WhereClause | string | Tidak | Pernyataan kondisional yang digunakan untuk penyaringan. |
SelectFields | string | Ya | Bidang yang ingin Anda query. |
Parameter FilterParams
"FilterParams" :[
{
"Name" : "publicStatus",
"Type" : "int",
"Operator" : "equal",
"Value" : 0
},
{
"Name" : "state",
"Type" : "int",
"Operator" : "equal",
"Value" : 1
},
{
"Name" : "checkStatus",
"Type" : "int",
"Operator" : "not_equal",
"Value" : 2
},
{
"Name" : "norec",
"Type" : "int",
"Operator" : "not_equal",
"Value" : 1
}
]Parameter | Tipe | Diperlukan | Deskripsi |
Name | string | Ya | Nama fitur. |
Domain | string | Tidak | Objek yang dimiliki fitur tersebut. Nilai yang valid: user dan item. |
Operator | string | Ya | Operator. Nilai yang valid: equal, not_equal, in, greater, greaterThan, less, dan lessThan. |
Type | string | Ya | Tipe fitur. |
Value | object | Ya | Nilai kondisi. |
Kedua parameter WhereClause dan FilterParams dapat dikonfigurasikan untuk penyaringan. Parameter WhereClause digunakan untuk menentukan kondisi penyaringan dalam permintaan query. Parameter FilterParams digunakan untuk menyaring hasil query.
Untuk informasi lebih lanjut tentang cara menggunakan operator, lihat bagian Lampiran dari topik ini.
CompletelyFairFilter
CompletelyFairFilter digunakan untuk mengurutkan item yang dikembalikan oleh tautan recall berdasarkan skor item, lalu memilih item dari hasil setiap tautan secara adil.
"FilterConfs" :[
{
"Name": "CompletelyFairFilter",
"FilterType": "CompletelyFairFilter",
"RetainNum": 500
}
]DimensionFieldUniqueFilter
DimensionFieldUniqueFilter bekerja berbeda dari UniqueFilter. DimensionFieldUniqueFilter menghapus item dengan nilai bidang yang duplikat.
"FilterConfs" :[
{
"Name": "GroupWeightCountFilter",
"FilterType": "GroupWeightCountFilter",
"Dimension:""
}
]UniqueFilter
UniqueFilter dirancang untuk memastikan bahwa setiap ID item unik. Jika ID item yang sama dikembalikan oleh dua tautan recall, UniqueFilter memberi prioritas pada ID item yang pertama kali dikembalikan.
Anda dapat menggunakan UniqueFilter saat mengonfigurasi parameter FilterNames tanpa perlu mengonfigurasi UniqueFilter.
Penggunaan filter
Penggunaan filter serupa dengan tautan recall. Setelah menyelesaikan konfigurasi filter, Anda dapat mengonfigurasi parameter FilterNames untuk skenario tertentu. FilterNames berada dalam struktur Map<String, Object>. Kunci menunjukkan skenario, dan nilainya menunjukkan sekumpulan kebijakan filter.
"FilterNames": {
"default": [
"UniqueFilter"
]
}default: nama skenario. Jika skenario tidak dikonfigurasi secara eksplisit, default digunakan.
UniqueFilter: nama kustom filter yang ditentukan dalam parameter FilterConfis.
Lampiran
Contoh operator
equal (sama dengan nilai yang ditentukan)
{
"Name" : "publicStatus",
"Type" : "int",
"Operator" : "equal",
"Value" : 0
}not_equal (tidak sama dengan nilai yang ditentukan)
{
"Name" : "checkStatus",
"Type" : "int",
"Operator" : "not_equal",
"Value" : 2
}greater (lebih besar dari nilai yang ditentukan)
{
"Name" : "checkStatus",
"Type" : "int",
"Operator" : "greater",
"Value" : 2
}greaterThan (lebih besar dari atau sama dengan nilai yang ditentukan)
{
"Name" : "checkStatus",
"Type" : "int",
"Operator" : "greaterThan",
"Value" : 2
}less (kurang dari nilai yang ditentukan)
{
"Name" : "checkStatus",
"Type" : "int",
"Operator" : "less",
"Value" : 2
}lessThan (kurang dari atau sama dengan nilai yang ditentukan)
{
"Name" : "checkStatus",
"Type" : "int",
"Operator" : "lessThan",
"Value" : 2
}in (sama dengan satu nilai atau beberapa nilai dalam array)
{
"Name" : "state",
"Type" : "int",
"Operator" : "in",
"Value" : [2, 4, 6]
}String
{
"Name" : "state",
"Type" : "string",
"Operator" : "in",
"Value" : ["success", "ok"]
}