geek-custom-api-core 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/app/search-ranking/entity/keyword-blacklist.entity.d.ts +4 -0
- package/dist/api/app/search-ranking/entity/keyword-blacklist.entity.js +27 -0
- package/dist/api/app/search-ranking/entity/keyword-blacklist.entity.js.map +1 -0
- package/dist/api/app/search-ranking/search-ranking.service.d.ts +1 -0
- package/dist/api/app/search-ranking/search-ranking.service.js +26 -10
- package/dist/api/app/search-ranking/search-ranking.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/sql/0.0.10.sql +9 -1
- package/sql/common.sql +2 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.KeywordBlacklist = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const common_entity_1 = require("../../../../common/entity/common.entity");
|
|
15
|
+
const typeorm_1 = require("typeorm");
|
|
16
|
+
let KeywordBlacklist = class KeywordBlacklist extends common_entity_1.CommonEntity {
|
|
17
|
+
};
|
|
18
|
+
exports.KeywordBlacklist = KeywordBlacklist;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, typeorm_1.Column)(),
|
|
21
|
+
(0, class_validator_1.IsString)(),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], KeywordBlacklist.prototype, "keyword", void 0);
|
|
24
|
+
exports.KeywordBlacklist = KeywordBlacklist = __decorate([
|
|
25
|
+
(0, typeorm_1.Entity)('gs_keywordBlackList')
|
|
26
|
+
], KeywordBlacklist);
|
|
27
|
+
//# sourceMappingURL=keyword-blacklist.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword-blacklist.entity.js","sourceRoot":"","sources":["../../../../../src/api/app/search-ranking/entity/keyword-blacklist.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA2C;AAC3C,2EAA+D;AAE/D,qCAAyC;AAGlC,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,4BAAY;CAIjD,CAAA;AAJY,4CAAgB;AAG3B;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;;iDACK;2BAHL,gBAAgB;IAD5B,IAAA,gBAAM,EAAC,qBAAqB,CAAC;GACjB,gBAAgB,CAI5B"}
|
|
@@ -7,6 +7,7 @@ export declare class SearchRankingService extends DefaultService {
|
|
|
7
7
|
snapshotCurrentRanking(partnerSno?: number): Promise<void>;
|
|
8
8
|
isDuplicateSearch(partnerSno: number, ip: string, keyword: string, expireTime?: number): Promise<boolean>;
|
|
9
9
|
incrementKeyword(partnerSno: number, ip: string, keyword: string): Promise<void>;
|
|
10
|
+
isBlacklisted(keyword: string): Promise<boolean>;
|
|
10
11
|
getKeywordRanking(partnerSno: number, count?: number): Promise<any[]>;
|
|
11
12
|
resetDailyRanking(): Promise<void>;
|
|
12
13
|
getAllSnapshots(partnerSno: number): Promise<any[]>;
|
|
@@ -19,6 +19,7 @@ const ioredis_1 = __importDefault(require("ioredis"));
|
|
|
19
19
|
const search_ranking_entity_1 = require("./entity/search-ranking.entity");
|
|
20
20
|
const default_service_1 = require("../../../common/service/default.service");
|
|
21
21
|
const moment_1 = __importDefault(require("moment"));
|
|
22
|
+
const keyword_blacklist_entity_1 = require("./entity/keyword-blacklist.entity");
|
|
22
23
|
let SearchRankingService = class SearchRankingService extends default_service_1.DefaultService {
|
|
23
24
|
constructor(moduleRef) {
|
|
24
25
|
super(moduleRef);
|
|
@@ -40,6 +41,7 @@ let SearchRankingService = class SearchRankingService extends default_service_1.
|
|
|
40
41
|
async isDuplicateSearch(partnerSno, ip, keyword, expireTime = 3600) {
|
|
41
42
|
const key = `search:${partnerSno}:${keyword}:ip:${ip}`;
|
|
42
43
|
const exists = await this.redis.exists(key);
|
|
44
|
+
return false;
|
|
43
45
|
if (exists) {
|
|
44
46
|
return true;
|
|
45
47
|
}
|
|
@@ -49,17 +51,30 @@ let SearchRankingService = class SearchRankingService extends default_service_1.
|
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
async incrementKeyword(partnerSno, ip, keyword) {
|
|
52
|
-
if (!(await this.
|
|
53
|
-
await this.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
if (!(await this.isBlacklisted(keyword))) {
|
|
55
|
+
if (!(await this.isDuplicateSearch(partnerSno, ip, keyword))) {
|
|
56
|
+
await this.redis.zincrby(`search_ranking:${partnerSno}`, 1, keyword);
|
|
57
|
+
const entityManager = await this.getEntityManager();
|
|
58
|
+
const searchDt = (0, moment_1.default)().format('YYYYMMDD');
|
|
59
|
+
await entityManager.query(`
|
|
60
|
+
INSERT INTO gs_searchRanking (partnerSno, keyword, count, searchDt)
|
|
61
|
+
VALUES (?, ?, 1, ?)
|
|
62
|
+
ON DUPLICATE KEY UPDATE count = count + 1
|
|
63
|
+
`, [partnerSno, keyword, searchDt]);
|
|
64
|
+
}
|
|
61
65
|
}
|
|
62
66
|
}
|
|
67
|
+
async isBlacklisted(keyword) {
|
|
68
|
+
const entityManager = await this.getEntityManager();
|
|
69
|
+
const qb = entityManager.createQueryBuilder(keyword_blacklist_entity_1.KeywordBlacklist, 'black');
|
|
70
|
+
qb.andWhere('black.keyword Like :keyword', {
|
|
71
|
+
keyword: `%${keyword}%`,
|
|
72
|
+
});
|
|
73
|
+
const isBlacked = await qb.getMany();
|
|
74
|
+
if (isBlacked.length > 0)
|
|
75
|
+
return true;
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
63
78
|
async getKeywordRanking(partnerSno, count = 10) {
|
|
64
79
|
const currentRankings = await this.getCurrentRanking(partnerSno, count);
|
|
65
80
|
const previousHour = (0, moment_1.default)().subtract(1, 'hour').format('YYYYMMDDHH');
|
|
@@ -70,13 +85,14 @@ let SearchRankingService = class SearchRankingService extends default_service_1.
|
|
|
70
85
|
previousRankMap.set(previousRankings[i], i / 2 + 1);
|
|
71
86
|
}
|
|
72
87
|
const topKeywords = [];
|
|
73
|
-
|
|
88
|
+
let ranking = 1;
|
|
74
89
|
for (let i = 0; i < currentRankings.length; i += 2) {
|
|
75
90
|
const keyword = currentRankings[i];
|
|
76
91
|
const score = Number(currentRankings[i + 1]);
|
|
77
92
|
const previousRank = previousRankMap.get(keyword);
|
|
78
93
|
const change = previousRank ? previousRank - (i / 2 + 1) : 0;
|
|
79
94
|
topKeywords.push({ ranking, keyword, score, change });
|
|
95
|
+
ranking++;
|
|
80
96
|
}
|
|
81
97
|
return topKeywords;
|
|
82
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-ranking.service.js","sourceRoot":"","sources":["../../../../src/api/app/search-ranking/search-ranking.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAAyC;AACzC,sDAA4B;AAC5B,0EAA+D;AAC/D,6EAAoE;AACpE,oDAA4B;
|
|
1
|
+
{"version":3,"file":"search-ranking.service.js","sourceRoot":"","sources":["../../../../src/api/app/search-ranking/search-ranking.service.ts"],"names":[],"mappings":"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"}
|