@se-studio/search 1.0.1 → 1.0.3
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @se-studio/search
|
|
2
2
|
|
|
3
|
+
## 1.0.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Bulk version bump: patch for all packages
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @se-studio/contentful-rest-api@1.0.92
|
|
10
|
+
- @se-studio/core-data-types@1.0.92
|
|
11
|
+
- @se-studio/markdown-renderer@1.0.56
|
|
12
|
+
|
|
13
|
+
## 1.0.2
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Bulk version bump: patch for all packages
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
- @se-studio/contentful-rest-api@1.0.91
|
|
20
|
+
- @se-studio/core-data-types@1.0.91
|
|
21
|
+
- @se-studio/markdown-renderer@1.0.55
|
|
22
|
+
|
|
3
23
|
## 1.0.1
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -10,6 +10,18 @@ export interface SearchApiConfig {
|
|
|
10
10
|
previewIndexName: string;
|
|
11
11
|
/** When true, queries the preview index instead of published. */
|
|
12
12
|
isPreview?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Controls the balance between semantic (vector) and keyword (BM25) matching.
|
|
15
|
+
* 0.0 = pure keyword (word must appear in text), 1.0 = pure semantic (concept matching).
|
|
16
|
+
* Default: Upstash default (~0.5). Recommended: 0.4 for most marketing sites.
|
|
17
|
+
*/
|
|
18
|
+
semanticWeight?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Minimum relevance score (0.0–1.0) required for a result to be returned.
|
|
21
|
+
* Results scoring below this threshold are discarded after deduplication.
|
|
22
|
+
* Default: 0 (no filtering). Recommended: 0.5 to remove low-relevance results.
|
|
23
|
+
*/
|
|
24
|
+
minScore?: number;
|
|
13
25
|
}
|
|
14
26
|
/**
|
|
15
27
|
* Creates a Next.js GET route handler for search queries.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-handler.d.ts","sourceRoot":"","sources":["../../src/api/route-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAkB,YAAY,EAAE,MAAM,UAAU,CAAC;AAE1F;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAazE;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"route-handler.d.ts","sourceRoot":"","sources":["../../src/api/route-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAkB,YAAY,EAAE,MAAM,UAAU,CAAC;AAE1F;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAazE;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,IAGxB,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CA0FzE;AAED,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,SAAS,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,IACzB,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAyB1E"}
|
|
@@ -56,7 +56,12 @@ export function createSearchApiHandler(config) {
|
|
|
56
56
|
isPreview: config.isPreview,
|
|
57
57
|
});
|
|
58
58
|
try {
|
|
59
|
-
const response = await client.search(indexName, {
|
|
59
|
+
const response = await client.search(indexName, {
|
|
60
|
+
query,
|
|
61
|
+
limit: fetchLimit,
|
|
62
|
+
filter,
|
|
63
|
+
semanticWeight: config.semanticWeight,
|
|
64
|
+
});
|
|
60
65
|
debugLog('api', `Search returned ${response.totalCount} raw results for "${query}"`);
|
|
61
66
|
debugLog('api', 'Raw chunks (before dedup)', response.results.map((r) => ({
|
|
62
67
|
id: r.id,
|
|
@@ -68,8 +73,11 @@ export function createSearchApiHandler(config) {
|
|
|
68
73
|
bodySnippet: r.content.body.slice(0, 200),
|
|
69
74
|
})));
|
|
70
75
|
const deduplicated = deduplicateChunks(response.results);
|
|
71
|
-
const
|
|
72
|
-
|
|
76
|
+
const aboveThreshold = config.minScore != null
|
|
77
|
+
? deduplicated.filter((r) => r.score >= config.minScore)
|
|
78
|
+
: deduplicated;
|
|
79
|
+
const trimmed = aboveThreshold.slice(0, limit);
|
|
80
|
+
debugLog('api', `After dedup: ${deduplicated.length} unique entries, ${aboveThreshold.length} above minScore threshold, returning ${trimmed.length}`);
|
|
73
81
|
debugLog('api', 'Final results', trimmed.map((r, i) => ({
|
|
74
82
|
rank: i + 1,
|
|
75
83
|
entryId: r.metadata.entryId,
|
|
@@ -82,7 +90,7 @@ export function createSearchApiHandler(config) {
|
|
|
82
90
|
const deduped = {
|
|
83
91
|
results: trimmed,
|
|
84
92
|
query: response.query,
|
|
85
|
-
totalCount:
|
|
93
|
+
totalCount: aboveThreshold.length,
|
|
86
94
|
};
|
|
87
95
|
return Response.json(deduped, { status: 200 });
|
|
88
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-handler.js","sourceRoot":"","sources":["../../src/api/route-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAuB;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;
|
|
1
|
+
{"version":3,"file":"route-handler.js","sourceRoot":"","sources":["../../src/api/route-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@se-studio/search",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "AI-powered site search with Upstash Search for Next.js marketing sites",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@upstash/search": "^0.1.7",
|
|
46
|
-
"@se-studio/contentful-rest-api": "1.0.
|
|
47
|
-
"@se-studio/core-data-types": "1.0.
|
|
48
|
-
"@se-studio/markdown-renderer": "1.0.
|
|
46
|
+
"@se-studio/contentful-rest-api": "1.0.92",
|
|
47
|
+
"@se-studio/core-data-types": "1.0.92",
|
|
48
|
+
"@se-studio/markdown-renderer": "1.0.56"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"next": "^15.0.0",
|