slightly better error checking before base64 decode, a=chris
slightly better error checking before base64 decode, a=chris
diff --git a/src/library/media_jobs/RecommendationJob.php b/src/library/media_jobs/RecommendationJob.php
index 21f6f0f55..80358ed7d 100644
--- a/src/library/media_jobs/RecommendationJob.php
+++ b/src/library/media_jobs/RecommendationJob.php
@@ -334,8 +334,10 @@ class RecommendationJob extends MediaJob
$term_embeddings = [];
$item_terms = [];
while ($row = $db->fetchArray($results)) {
- $this->lru_cache->put($row['ID'],
- base64_decode($row['VECTOR'], true));
+ if (!empty($row['VECTOR'])) {
+ $this->lru_cache->put($row['ID'],
+ base64_decode($row['VECTOR'], true));
+ }
}
$context_distance_sum = (self::CONTEXT_WINDOW_LENGTH *
(self::CONTEXT_WINDOW_LENGTH + 1)) / 2.0;
@@ -934,8 +936,10 @@ class RecommendationJob extends MediaJob
$resource_terms = [];
$meta_details_terms = [];
while ($row = $db->fetchArray($results)) {
- $this->lru_cache->put($row['ID'],
- base64_decode($row['VECTOR'], true));
+ if (!empty($row['VECTOR'])) {
+ $this->lru_cache->put($row['ID'],
+ base64_decode($row['VECTOR'], true));
+ }
}
$context_distance_sum = (self::CONTEXT_WINDOW_LENGTH *
(self::CONTEXT_WINDOW_LENGTH + 1)) / 2.0;
@@ -1268,7 +1272,7 @@ class RecommendationJob extends MediaJob
"WHERE ITEM_TYPE = ? AND ID = ?";
$result = $db->execute($sql, [$item_type, $term_id]);
$row = $db->fetchArray($result);
- if (!$row) {
+ if (!$row || empty($row['VECTOR'])) {
$term_embedding = pack("E*", ...array_fill(1,
self::EMBEDDING_VECTOR_SIZE, 0.0));
} else {