@frogbotai/db-mongodb 0.28.0 → 0.30.0
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/index.d.ts.map +1 -1
- package/dist/index.js +18 -5
- package/dist/index.js.map +1 -1
- package/dist/jobIndexes.d.ts +3 -0
- package/dist/jobIndexes.d.ts.map +1 -0
- package/dist/jobIndexes.js +37 -0
- package/dist/jobIndexes.js.map +1 -0
- package/dist/jobLogs.d.ts +6 -0
- package/dist/jobLogs.d.ts.map +1 -0
- package/dist/jobLogs.js +42 -0
- package/dist/jobLogs.js.map +1 -0
- package/dist/jobModel.js +29 -12
- package/dist/jobModel.js.map +1 -1
- package/dist/search/buildSchema.js +15 -9
- package/dist/search/buildSchema.js.map +1 -1
- package/dist/search/buildSearchIndexes.js +135 -55
- package/dist/search/buildSearchIndexes.js.map +1 -1
- package/dist/search/capabilities.js +12 -15
- package/dist/search/capabilities.js.map +1 -1
- package/dist/search/createSearchSetupError.js +12 -5
- package/dist/search/createSearchSetupError.js.map +1 -1
- package/dist/search/ensureSearchIndexes.js +35 -20
- package/dist/search/ensureSearchIndexes.js.map +1 -1
- package/dist/search/findSearchIndex.js +3 -2
- package/dist/search/findSearchIndex.js.map +1 -1
- package/dist/search/getSearchIndexes.js +2 -1
- package/dist/search/getSearchIndexes.js.map +1 -1
- package/dist/search/getSearchModel.js +2 -1
- package/dist/search/getSearchModel.js.map +1 -1
- package/dist/search/getSearchPath.js +17 -13
- package/dist/search/getSearchPath.js.map +1 -1
- package/dist/search/index.js +2 -1
- package/dist/search/index.js.map +1 -1
- package/dist/search/isDraftSearch.js +2 -1
- package/dist/search/isDraftSearch.js.map +1 -1
- package/dist/search/isSearchIndexDefinitionEqual.js +26 -19
- package/dist/search/isSearchIndexDefinitionEqual.js.map +1 -1
- package/dist/search/pipelines/buildHybridPipeline.js +147 -40
- package/dist/search/pipelines/buildHybridPipeline.js.map +1 -1
- package/dist/search/pipelines/buildSearchStage.js +17 -5
- package/dist/search/pipelines/buildSearchStage.js.map +1 -1
- package/dist/search/pipelines/buildVectorScore.js +24 -4
- package/dist/search/pipelines/buildVectorScore.js.map +1 -1
- package/dist/search/pipelines/buildVectorSearchStage.js +15 -7
- package/dist/search/pipelines/buildVectorSearchStage.js.map +1 -1
- package/dist/search/queries/buildSearchFilter.js +13 -6
- package/dist/search/queries/buildSearchFilter.js.map +1 -1
- package/dist/search/queries/buildSearchOperator.js +41 -8
- package/dist/search/queries/buildSearchOperator.js.map +1 -1
- package/dist/search/queries/buildVectorSearchFilter.js +32 -8
- package/dist/search/queries/buildVectorSearchFilter.js.map +1 -1
- package/dist/search/queries/parseSearchFilter.js +125 -56
- package/dist/search/queries/parseSearchFilter.js.map +1 -1
- package/dist/search/readiness.js +23 -12
- package/dist/search/readiness.js.map +1 -1
- package/dist/search/search.js +180 -76
- package/dist/search/search.js.map +1 -1
- package/dist/search/supportsRankFusion.js +29 -10
- package/dist/search/supportsRankFusion.js.map +1 -1
- package/dist/search/types.js +2 -1
- package/dist/search/types.js.map +1 -1
- package/dist/updateJobLeases.js +20 -5
- package/dist/updateJobLeases.js.map +1 -1
- package/dist/updateJobs.js +79 -30
- package/dist/updateJobs.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,13 +1,53 @@
|
|
|
1
1
|
const rrfRankConstant = 60;
|
|
2
|
-
function buildRankStages({ component, idPath, score
|
|
2
|
+
function buildRankStages({ component, idPath, score }) {
|
|
3
3
|
return [
|
|
4
|
-
{
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
{
|
|
5
|
+
$project: {
|
|
6
|
+
_id: 0,
|
|
7
|
+
id: `$${idPath}`,
|
|
8
|
+
score
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
$setWindowFields: {
|
|
13
|
+
sortBy: {
|
|
14
|
+
score: -1
|
|
15
|
+
},
|
|
16
|
+
output: {
|
|
17
|
+
rank: {
|
|
18
|
+
$rank: {}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
$project: {
|
|
25
|
+
id: 1,
|
|
26
|
+
[component]: {
|
|
27
|
+
rank: '$rank',
|
|
28
|
+
score: '$score'
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
7
32
|
];
|
|
8
33
|
}
|
|
9
34
|
function buildReciprocalRank({ component, weight }) {
|
|
10
|
-
return {
|
|
35
|
+
return {
|
|
36
|
+
$ifNull: [
|
|
37
|
+
{
|
|
38
|
+
$divide: [
|
|
39
|
+
weight,
|
|
40
|
+
{
|
|
41
|
+
$add: [
|
|
42
|
+
rrfRankConstant,
|
|
43
|
+
`$${component}.rank`
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
0
|
|
49
|
+
]
|
|
50
|
+
};
|
|
11
51
|
}
|
|
12
52
|
function buildScoreDetail(component) {
|
|
13
53
|
return {
|
|
@@ -17,48 +57,73 @@ function buildScoreDetail(component) {
|
|
|
17
57
|
$first: {
|
|
18
58
|
$filter: {
|
|
19
59
|
input: '$details.details',
|
|
20
|
-
cond: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
60
|
+
cond: {
|
|
61
|
+
$eq: [
|
|
62
|
+
'$$this.inputPipelineName',
|
|
63
|
+
component
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
24
69
|
},
|
|
25
70
|
in: {
|
|
26
71
|
$cond: [
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
72
|
+
{
|
|
73
|
+
$isNumber: '$$detail.rank'
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
rank: '$$detail.rank',
|
|
77
|
+
score: '$$detail.value'
|
|
78
|
+
},
|
|
79
|
+
null
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
}
|
|
33
83
|
};
|
|
34
84
|
}
|
|
35
|
-
export function buildHybridPipeline({ collection, idPath, limit, rankFusion, searchPipeline, vectorSearchStage, weights
|
|
85
|
+
export function buildHybridPipeline({ collection, idPath, limit, rankFusion, searchPipeline, vectorSearchStage, weights }) {
|
|
36
86
|
if (rankFusion) {
|
|
37
87
|
return [
|
|
38
88
|
{
|
|
39
89
|
$rankFusion: {
|
|
40
|
-
input: {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
90
|
+
input: {
|
|
91
|
+
pipelines: {
|
|
92
|
+
lexical: searchPipeline,
|
|
93
|
+
vector: [
|
|
94
|
+
vectorSearchStage
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
combination: {
|
|
99
|
+
weights
|
|
100
|
+
},
|
|
101
|
+
scoreDetails: true
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
$limit: limit
|
|
44
106
|
},
|
|
45
|
-
{ $limit: limit },
|
|
46
107
|
{
|
|
47
108
|
$project: {
|
|
48
109
|
_id: 0,
|
|
49
110
|
id: `$${idPath}`,
|
|
50
|
-
score: {
|
|
51
|
-
|
|
52
|
-
|
|
111
|
+
score: {
|
|
112
|
+
$meta: 'score'
|
|
113
|
+
},
|
|
114
|
+
details: {
|
|
115
|
+
$meta: 'scoreDetails'
|
|
116
|
+
}
|
|
117
|
+
}
|
|
53
118
|
},
|
|
54
119
|
{
|
|
55
120
|
$project: {
|
|
56
121
|
id: 1,
|
|
57
122
|
score: 1,
|
|
58
123
|
lexical: buildScoreDetail('lexical'),
|
|
59
|
-
vector: buildScoreDetail('vector')
|
|
60
|
-
}
|
|
61
|
-
}
|
|
124
|
+
vector: buildScoreDetail('vector')
|
|
125
|
+
}
|
|
126
|
+
}
|
|
62
127
|
];
|
|
63
128
|
}
|
|
64
129
|
return [
|
|
@@ -66,34 +131,76 @@ export function buildHybridPipeline({ collection, idPath, limit, rankFusion, sea
|
|
|
66
131
|
...buildRankStages({
|
|
67
132
|
component: 'vector',
|
|
68
133
|
idPath,
|
|
69
|
-
score: {
|
|
134
|
+
score: {
|
|
135
|
+
$meta: 'vectorSearchScore'
|
|
136
|
+
}
|
|
70
137
|
}),
|
|
71
138
|
{
|
|
72
139
|
$unionWith: {
|
|
73
140
|
coll: collection,
|
|
74
141
|
pipeline: [
|
|
75
142
|
...searchPipeline,
|
|
76
|
-
...buildRankStages({
|
|
77
|
-
|
|
78
|
-
|
|
143
|
+
...buildRankStages({
|
|
144
|
+
component: 'lexical',
|
|
145
|
+
idPath,
|
|
146
|
+
score: {
|
|
147
|
+
$meta: 'searchScore'
|
|
148
|
+
}
|
|
149
|
+
})
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
$group: {
|
|
155
|
+
_id: '$id',
|
|
156
|
+
lexical: {
|
|
157
|
+
$min: '$lexical'
|
|
158
|
+
},
|
|
159
|
+
vector: {
|
|
160
|
+
$min: '$vector'
|
|
161
|
+
}
|
|
162
|
+
}
|
|
79
163
|
},
|
|
80
|
-
{ $group: { _id: '$id', lexical: { $min: '$lexical' }, vector: { $min: '$vector' } } },
|
|
81
164
|
{
|
|
82
165
|
$project: {
|
|
83
166
|
_id: 0,
|
|
84
167
|
id: '$_id',
|
|
85
168
|
score: {
|
|
86
169
|
$add: [
|
|
87
|
-
buildReciprocalRank({
|
|
88
|
-
|
|
89
|
-
|
|
170
|
+
buildReciprocalRank({
|
|
171
|
+
component: 'lexical',
|
|
172
|
+
weight: weights.lexical
|
|
173
|
+
}),
|
|
174
|
+
buildReciprocalRank({
|
|
175
|
+
component: 'vector',
|
|
176
|
+
weight: weights.vector
|
|
177
|
+
})
|
|
178
|
+
]
|
|
90
179
|
},
|
|
91
|
-
lexical: {
|
|
92
|
-
|
|
93
|
-
|
|
180
|
+
lexical: {
|
|
181
|
+
$ifNull: [
|
|
182
|
+
'$lexical',
|
|
183
|
+
null
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
vector: {
|
|
187
|
+
$ifNull: [
|
|
188
|
+
'$vector',
|
|
189
|
+
null
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
$sort: {
|
|
196
|
+
score: -1,
|
|
197
|
+
id: 1
|
|
198
|
+
}
|
|
94
199
|
},
|
|
95
|
-
{
|
|
96
|
-
|
|
200
|
+
{
|
|
201
|
+
$limit: limit
|
|
202
|
+
}
|
|
97
203
|
];
|
|
98
204
|
}
|
|
205
|
+
|
|
99
206
|
//# sourceMappingURL=buildHybridPipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/pipelines/buildHybridPipeline.ts"],"names":["rrfRankConstant","buildRankStages","component","idPath","score","$project","_id","id","$setWindowFields","sortBy","output","rank","$rank","buildReciprocalRank","weight","$ifNull","$divide","$add","buildScoreDetail","$let","vars","detail","$first","$filter","input","cond","$eq","in","$cond","$isNumber","buildHybridPipeline","collection","limit","rankFusion","searchPipeline","vectorSearchStage","weights","$rankFusion","pipelines","lexical","vector","combination","scoreDetails","$limit","$meta","details","$unionWith","coll","pipeline","$group","$min","$sort"],"mappings":"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","file":"buildHybridPipeline.js"}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
-
export function buildSearchStage({ filter, name, paths, text
|
|
1
|
+
export function buildSearchStage({ filter, name, paths, text }) {
|
|
2
2
|
return {
|
|
3
3
|
$search: {
|
|
4
4
|
index: name,
|
|
5
5
|
compound: {
|
|
6
|
-
must: [
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
must: [
|
|
7
|
+
{
|
|
8
|
+
text: {
|
|
9
|
+
query: text,
|
|
10
|
+
path: paths
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
...filter ? {
|
|
15
|
+
filter: [
|
|
16
|
+
filter
|
|
17
|
+
]
|
|
18
|
+
} : {}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
10
21
|
};
|
|
11
22
|
}
|
|
23
|
+
|
|
12
24
|
//# sourceMappingURL=buildSearchStage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/pipelines/buildSearchStage.ts"],"names":["buildSearchStage","filter","name","paths","text","$search","index","compound","must","query","path"],"mappings":"AAAA,OAAO,SAASA,iBAAiB,EAC/BC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,IAAI,EAML;IACC,OAAO;QACLC,SAAS;YACPC,OAAOJ;YACPK,UAAU;gBACRC,MAAM;oBAAC;wBAAEJ,MAAM;4BAAEK,OAAOL;4BAAMM,MAAMP;wBAAM;oBAAE;iBAAE;gBAC9C,GAAIF,SAAS;oBAAEA,QAAQ;wBAACA;qBAAO;gBAAC,IAAI,CAAC,CAAC;YACxC;QACF;IACF;AACF","file":"buildSearchStage.js"}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
export function buildVectorScore({ metric, score
|
|
2
|
-
if (metric === 'euclidean')
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export function buildVectorScore({ metric, score }) {
|
|
2
|
+
if (metric === 'euclidean') return {
|
|
3
|
+
$subtract: [
|
|
4
|
+
{
|
|
5
|
+
$divide: [
|
|
6
|
+
1,
|
|
7
|
+
score
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
1
|
|
11
|
+
]
|
|
12
|
+
};
|
|
13
|
+
return {
|
|
14
|
+
$subtract: [
|
|
15
|
+
{
|
|
16
|
+
$multiply: [
|
|
17
|
+
2,
|
|
18
|
+
score
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
1
|
|
22
|
+
]
|
|
23
|
+
};
|
|
5
24
|
}
|
|
25
|
+
|
|
6
26
|
//# sourceMappingURL=buildVectorScore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/pipelines/buildVectorScore.ts"],"names":["buildVectorScore","metric","score","$subtract","$divide","$multiply"],"mappings":"AAEA,OAAO,SAASA,iBAAiB,EAC/BC,MAAM,EACNC,KAAK,EAIN;IACC,IAAID,WAAW,aAAa,OAAO;QAAEE,WAAW;YAAC;gBAAEC,SAAS;oBAAC;oBAAGF;iBAAM;YAAC;YAAG;SAAE;IAAC;IAE7E,OAAO;QAAEC,WAAW;YAAC;gBAAEE,WAAW;oBAAC;oBAAGH;iBAAM;YAAC;YAAG;SAAE;IAAC;AACrD","file":"buildVectorScore.js"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
export const maxNumCandidates = 10000;
|
|
2
|
-
export function isApproximateVectorSearch({ approximate, limit
|
|
2
|
+
export function isApproximateVectorSearch({ approximate, limit }) {
|
|
3
3
|
return approximate && limit <= maxNumCandidates;
|
|
4
4
|
}
|
|
5
|
-
export function buildVectorSearchStage({ approximate, candidates, filter, limit, name, path, vector
|
|
6
|
-
const breadth = isApproximateVectorSearch({
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export function buildVectorSearchStage({ approximate, candidates, filter, limit, name, path, vector }) {
|
|
6
|
+
const breadth = isApproximateVectorSearch({
|
|
7
|
+
approximate,
|
|
8
|
+
limit
|
|
9
|
+
}) ? {
|
|
10
|
+
numCandidates: Math.min(Math.max(candidates, limit), maxNumCandidates)
|
|
11
|
+
} : {
|
|
12
|
+
exact: true
|
|
13
|
+
};
|
|
9
14
|
return {
|
|
10
15
|
$vectorSearch: {
|
|
11
16
|
index: name,
|
|
@@ -13,8 +18,11 @@ export function buildVectorSearchStage({ approximate, candidates, filter, limit,
|
|
|
13
18
|
queryVector: vector,
|
|
14
19
|
limit,
|
|
15
20
|
...breadth,
|
|
16
|
-
...
|
|
17
|
-
|
|
21
|
+
...filter ? {
|
|
22
|
+
filter
|
|
23
|
+
} : {}
|
|
24
|
+
}
|
|
18
25
|
};
|
|
19
26
|
}
|
|
27
|
+
|
|
20
28
|
//# sourceMappingURL=buildVectorSearchStage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/pipelines/buildVectorSearchStage.ts"],"names":["maxNumCandidates","isApproximateVectorSearch","approximate","limit","buildVectorSearchStage","candidates","filter","name","path","vector","breadth","numCandidates","Math","min","max","exact","$vectorSearch","index","queryVector"],"mappings":"AAAA,OAAO,MAAMA,mBAAmB,MAAM;AAEtC,OAAO,SAASC,0BAA0B,EACxCC,WAAW,EACXC,KAAK,EAIN;IACC,OAAOD,eAAeC,SAASH;AACjC;AAEA,OAAO,SAASI,uBAAuB,EACrCF,WAAW,EACXG,UAAU,EACVC,MAAM,EACNH,KAAK,EACLI,IAAI,EACJC,IAAI,EACJC,MAAM,EASP;IACC,MAAMC,UAAUT,0BAA0B;QAAEC;QAAaC;IAAM,KAC3D;QAAEQ,eAAeC,KAAKC,GAAG,CAACD,KAAKE,GAAG,CAACT,YAAYF,QAAQH;IAAkB,IACzE;QAAEe,OAAO;IAAK;IAElB,OAAO;QACLC,eAAe;YACbC,OAAOV;YACPC;YACAU,aAAaT;YACbN;YACA,GAAGO,OAAO;YACV,GAAIJ,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;QAC9B;IACF;AACF","file":"buildVectorSearchStage.js"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { appendVersionToQueryKey, combineQueries } from 'payload';
|
|
2
2
|
import { getSearchModel } from '../getSearchModel.js';
|
|
3
3
|
import { parseSearchFilter } from './parseSearchFilter.js';
|
|
4
|
-
export async function buildSearchFilter({ adapter, locale, searchIndex, where
|
|
4
|
+
export async function buildSearchFilter({ adapter, locale, searchIndex, where }) {
|
|
5
5
|
const Model = getSearchModel({
|
|
6
6
|
adapter,
|
|
7
7
|
collection: searchIndex.collection,
|
|
8
|
-
versions: searchIndex.versions
|
|
8
|
+
versions: searchIndex.versions
|
|
9
9
|
});
|
|
10
10
|
const query = await Model.buildQuery({
|
|
11
11
|
locale,
|
|
12
12
|
payload: adapter.payload,
|
|
13
|
-
where: searchIndex.versions
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
where: searchIndex.versions ? combineQueries({
|
|
14
|
+
latest: {
|
|
15
|
+
equals: true
|
|
16
|
+
}
|
|
17
|
+
}, appendVersionToQueryKey(where)) : where
|
|
18
|
+
});
|
|
19
|
+
return parseSearchFilter({
|
|
20
|
+
fields: searchIndex.fields,
|
|
21
|
+
index: searchIndex.index,
|
|
22
|
+
query
|
|
16
23
|
});
|
|
17
|
-
return parseSearchFilter({ fields: searchIndex.fields, index: searchIndex.index, query });
|
|
18
24
|
}
|
|
25
|
+
|
|
19
26
|
//# sourceMappingURL=buildSearchFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/queries/buildSearchFilter.ts"],"names":["appendVersionToQueryKey","combineQueries","getSearchModel","parseSearchFilter","buildSearchFilter","adapter","locale","searchIndex","where","Model","collection","versions","query","buildQuery","payload","latest","equals","fields","index"],"mappings":"AAEA,SAASA,uBAAuB,EAAEC,cAAc,QAAQ,UAAU;AAElE,SAASC,cAAc,QAAQ,uBAAuB;AAEtD,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,eAAeC,kBAAkB,EACtCC,OAAO,EACPC,MAAM,EACNC,WAAW,EACXC,KAAK,EAMN;IACC,MAAMC,QAAQP,eAAe;QAC3BG;QACAK,YAAYH,YAAYG,UAAU;QAClCC,UAAUJ,YAAYI,QAAQ;IAChC;IAEA,MAAMC,QAAQ,MAAMH,MAAMI,UAAU,CAAC;QACnCP;QACAQ,SAAST,QAAQS,OAAO;QACxBN,OAAOD,YAAYI,QAAQ,GACvBV,eAAe;YAAEc,QAAQ;gBAAEC,QAAQ;YAAK;QAAE,GAAGhB,wBAAwBQ,UACrEA;IACN;IAEA,OAAOL,kBAAkB;QAAEc,QAAQV,YAAYU,MAAM;QAAEC,OAAOX,YAAYW,KAAK;QAAEN;IAAM;AACzF","file":"buildSearchFilter.js"}
|
|
@@ -1,21 +1,54 @@
|
|
|
1
1
|
export function buildSearchOperator(filter) {
|
|
2
|
-
switch
|
|
2
|
+
switch(filter.type){
|
|
3
3
|
case 'and':
|
|
4
|
-
return {
|
|
4
|
+
return {
|
|
5
|
+
compound: {
|
|
6
|
+
filter: filter.filters.map(buildSearchOperator)
|
|
7
|
+
}
|
|
8
|
+
};
|
|
5
9
|
case 'or':
|
|
6
10
|
return {
|
|
7
|
-
compound: {
|
|
11
|
+
compound: {
|
|
12
|
+
should: filter.filters.map(buildSearchOperator),
|
|
13
|
+
minimumShouldMatch: 1
|
|
14
|
+
}
|
|
8
15
|
};
|
|
9
16
|
case 'not':
|
|
10
|
-
return {
|
|
17
|
+
return {
|
|
18
|
+
compound: {
|
|
19
|
+
mustNot: [
|
|
20
|
+
buildSearchOperator(filter.filter)
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
};
|
|
11
24
|
case 'equals':
|
|
12
|
-
return {
|
|
25
|
+
return {
|
|
26
|
+
equals: {
|
|
27
|
+
path: filter.path,
|
|
28
|
+
value: filter.value
|
|
29
|
+
}
|
|
30
|
+
};
|
|
13
31
|
case 'exists':
|
|
14
|
-
return {
|
|
32
|
+
return {
|
|
33
|
+
exists: {
|
|
34
|
+
path: filter.path
|
|
35
|
+
}
|
|
36
|
+
};
|
|
15
37
|
case 'in':
|
|
16
|
-
return {
|
|
38
|
+
return {
|
|
39
|
+
in: {
|
|
40
|
+
path: filter.path,
|
|
41
|
+
value: filter.values
|
|
42
|
+
}
|
|
43
|
+
};
|
|
17
44
|
case 'range':
|
|
18
|
-
return {
|
|
45
|
+
return {
|
|
46
|
+
range: {
|
|
47
|
+
path: filter.path,
|
|
48
|
+
...filter.range
|
|
49
|
+
}
|
|
50
|
+
};
|
|
19
51
|
}
|
|
20
52
|
}
|
|
53
|
+
|
|
21
54
|
//# sourceMappingURL=buildSearchOperator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/queries/buildSearchOperator.ts"],"names":["buildSearchOperator","filter","type","compound","filters","map","should","minimumShouldMatch","mustNot","equals","path","value","exists","in","values","range"],"mappings":"AAEA,OAAO,SAASA,oBAAoBC,MAAwB;IAC1D,OAAQA,OAAOC,IAAI;QACjB,KAAK;YACH,OAAO;gBAAEC,UAAU;oBAAEF,QAAQA,OAAOG,OAAO,CAACC,GAAG,CAACL;gBAAqB;YAAE;QACzE,KAAK;YACH,OAAO;gBACLG,UAAU;oBAAEG,QAAQL,OAAOG,OAAO,CAACC,GAAG,CAACL;oBAAsBO,oBAAoB;gBAAE;YACrF;QACF,KAAK;YACH,OAAO;gBAAEJ,UAAU;oBAAEK,SAAS;wBAACR,oBAAoBC,OAAOA,MAAM;qBAAE;gBAAC;YAAE;QACvE,KAAK;YACH,OAAO;gBAAEQ,QAAQ;oBAAEC,MAAMT,OAAOS,IAAI;oBAAEC,OAAOV,OAAOU,KAAK;gBAAC;YAAE;QAC9D,KAAK;YACH,OAAO;gBAAEC,QAAQ;oBAAEF,MAAMT,OAAOS,IAAI;gBAAC;YAAE;QACzC,KAAK;YACH,OAAO;gBAAEG,IAAI;oBAAEH,MAAMT,OAAOS,IAAI;oBAAEC,OAAOV,OAAOa,MAAM;gBAAC;YAAE;QAC3D,KAAK;YACH,OAAO;gBAAEC,OAAO;oBAAEL,MAAMT,OAAOS,IAAI;oBAAE,GAAGT,OAAOc,KAAK;gBAAC;YAAE;IAC3D;AACF","file":"buildSearchOperator.js"}
|
|
@@ -1,21 +1,45 @@
|
|
|
1
1
|
export function buildVectorSearchFilter(filter) {
|
|
2
|
-
switch
|
|
2
|
+
switch(filter.type){
|
|
3
3
|
case 'and':
|
|
4
|
-
return {
|
|
4
|
+
return {
|
|
5
|
+
$and: filter.filters.map(buildVectorSearchFilter)
|
|
6
|
+
};
|
|
5
7
|
case 'or':
|
|
6
|
-
return {
|
|
8
|
+
return {
|
|
9
|
+
$or: filter.filters.map(buildVectorSearchFilter)
|
|
10
|
+
};
|
|
7
11
|
case 'not':
|
|
8
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
$nor: [
|
|
14
|
+
buildVectorSearchFilter(filter.filter)
|
|
15
|
+
]
|
|
16
|
+
};
|
|
9
17
|
case 'equals':
|
|
10
|
-
return {
|
|
18
|
+
return {
|
|
19
|
+
[filter.path]: {
|
|
20
|
+
$eq: filter.value
|
|
21
|
+
}
|
|
22
|
+
};
|
|
11
23
|
case 'exists':
|
|
12
|
-
return {
|
|
24
|
+
return {
|
|
25
|
+
[filter.path]: {
|
|
26
|
+
$exists: true
|
|
27
|
+
}
|
|
28
|
+
};
|
|
13
29
|
case 'in':
|
|
14
|
-
return {
|
|
30
|
+
return {
|
|
31
|
+
[filter.path]: {
|
|
32
|
+
$in: filter.values
|
|
33
|
+
}
|
|
34
|
+
};
|
|
15
35
|
case 'range':
|
|
16
36
|
return {
|
|
17
|
-
[filter.path]: Object.fromEntries(Object.entries(filter.range).map(([operator, value])
|
|
37
|
+
[filter.path]: Object.fromEntries(Object.entries(filter.range).map(([operator, value])=>[
|
|
38
|
+
`$${operator}`,
|
|
39
|
+
value
|
|
40
|
+
]))
|
|
18
41
|
};
|
|
19
42
|
}
|
|
20
43
|
}
|
|
44
|
+
|
|
21
45
|
//# sourceMappingURL=buildVectorSearchFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/search/queries/buildVectorSearchFilter.ts"],"names":["buildVectorSearchFilter","filter","type","$and","filters","map","$or","$nor","path","$eq","value","$exists","$in","values","Object","fromEntries","entries","range","operator"],"mappings":"AAEA,OAAO,SAASA,wBAAwBC,MAAwB;IAC9D,OAAQA,OAAOC,IAAI;QACjB,KAAK;YACH,OAAO;gBAAEC,MAAMF,OAAOG,OAAO,CAACC,GAAG,CAACL;YAAyB;QAC7D,KAAK;YACH,OAAO;gBAAEM,KAAKL,OAAOG,OAAO,CAACC,GAAG,CAACL;YAAyB;QAC5D,KAAK;YACH,OAAO;gBAAEO,MAAM;oBAACP,wBAAwBC,OAAOA,MAAM;iBAAE;YAAC;QAC1D,KAAK;YACH,OAAO;gBAAE,CAACA,OAAOO,IAAI,CAAC,EAAE;oBAAEC,KAAKR,OAAOS,KAAK;gBAAC;YAAE;QAChD,KAAK;YACH,OAAO;gBAAE,CAACT,OAAOO,IAAI,CAAC,EAAE;oBAAEG,SAAS;gBAAK;YAAE;QAC5C,KAAK;YACH,OAAO;gBAAE,CAACV,OAAOO,IAAI,CAAC,EAAE;oBAAEI,KAAKX,OAAOY,MAAM;gBAAC;YAAE;QACjD,KAAK;YACH,OAAO;gBACL,CAACZ,OAAOO,IAAI,CAAC,EAAEM,OAAOC,WAAW,CAC/BD,OAAOE,OAAO,CAACf,OAAOgB,KAAK,EAAEZ,GAAG,CAAC,CAAC,CAACa,UAAUR,MAAM,GAAK;wBAAC,CAAC,CAAC,EAAEQ,UAAU;wBAAER;qBAAM;YAEnF;IACJ;AACF","file":"buildVectorSearchFilter.js"}
|