@memberjunction/search-engine 5.33.0 → 5.34.1
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/generic/BaseReRanker.d.ts +164 -0
- package/dist/generic/BaseReRanker.d.ts.map +1 -0
- package/dist/generic/BaseReRanker.js +209 -0
- package/dist/generic/BaseReRanker.js.map +1 -0
- package/dist/generic/EntitySearchProvider.d.ts +36 -4
- package/dist/generic/EntitySearchProvider.d.ts.map +1 -1
- package/dist/generic/EntitySearchProvider.js +95 -19
- package/dist/generic/EntitySearchProvider.js.map +1 -1
- package/dist/generic/FullTextSearchProvider.d.ts +2 -2
- package/dist/generic/FullTextSearchProvider.d.ts.map +1 -1
- package/dist/generic/FullTextSearchProvider.js +14 -3
- package/dist/generic/FullTextSearchProvider.js.map +1 -1
- package/dist/generic/ISearchProvider.d.ts +44 -2
- package/dist/generic/ISearchProvider.d.ts.map +1 -1
- package/dist/generic/ISearchProvider.js +35 -1
- package/dist/generic/ISearchProvider.js.map +1 -1
- package/dist/generic/NoopReRanker.d.ts +28 -0
- package/dist/generic/NoopReRanker.d.ts.map +1 -0
- package/dist/generic/NoopReRanker.js +49 -0
- package/dist/generic/NoopReRanker.js.map +1 -0
- package/dist/generic/ScopeTemplateRenderer.d.ts +36 -0
- package/dist/generic/ScopeTemplateRenderer.d.ts.map +1 -0
- package/dist/generic/ScopeTemplateRenderer.js +110 -0
- package/dist/generic/ScopeTemplateRenderer.js.map +1 -0
- package/dist/generic/SearchEngine.d.ts +154 -12
- package/dist/generic/SearchEngine.d.ts.map +1 -1
- package/dist/generic/SearchEngine.js +662 -39
- package/dist/generic/SearchEngine.js.map +1 -1
- package/dist/generic/SearchFusion.d.ts +40 -6
- package/dist/generic/SearchFusion.d.ts.map +1 -1
- package/dist/generic/SearchFusion.js +139 -18
- package/dist/generic/SearchFusion.js.map +1 -1
- package/dist/generic/StorageSearchProvider.d.ts +9 -2
- package/dist/generic/StorageSearchProvider.d.ts.map +1 -1
- package/dist/generic/StorageSearchProvider.js +44 -12
- package/dist/generic/StorageSearchProvider.js.map +1 -1
- package/dist/generic/VectorSearchProvider.d.ts +9 -2
- package/dist/generic/VectorSearchProvider.d.ts.map +1 -1
- package/dist/generic/VectorSearchProvider.js +83 -13
- package/dist/generic/VectorSearchProvider.js.map +1 -1
- package/dist/generic/search.types.d.ts +206 -0
- package/dist/generic/search.types.d.ts.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions/SearchScopePermissionResolver.d.ts +109 -0
- package/dist/permissions/SearchScopePermissionResolver.d.ts.map +1 -0
- package/dist/permissions/SearchScopePermissionResolver.js +159 -0
- package/dist/permissions/SearchScopePermissionResolver.js.map +1 -0
- package/dist/providers/AzureAISearchProvider.d.ts +37 -0
- package/dist/providers/AzureAISearchProvider.d.ts.map +1 -0
- package/dist/providers/AzureAISearchProvider.js +180 -0
- package/dist/providers/AzureAISearchProvider.js.map +1 -0
- package/dist/providers/ElasticsearchSearchProvider.d.ts +43 -0
- package/dist/providers/ElasticsearchSearchProvider.d.ts.map +1 -0
- package/dist/providers/ElasticsearchSearchProvider.js +200 -0
- package/dist/providers/ElasticsearchSearchProvider.js.map +1 -0
- package/dist/providers/OpenSearchSearchProvider.d.ts +36 -0
- package/dist/providers/OpenSearchSearchProvider.d.ts.map +1 -0
- package/dist/providers/OpenSearchSearchProvider.js +167 -0
- package/dist/providers/OpenSearchSearchProvider.js.map +1 -0
- package/dist/providers/TypesenseSearchProvider.d.ts +36 -0
- package/dist/providers/TypesenseSearchProvider.d.ts.map +1 -0
- package/dist/providers/TypesenseSearchProvider.js +161 -0
- package/dist/providers/TypesenseSearchProvider.js.map +1 -0
- package/dist/rerankers/BGEReRanker.d.ts +57 -0
- package/dist/rerankers/BGEReRanker.d.ts.map +1 -0
- package/dist/rerankers/BGEReRanker.js +193 -0
- package/dist/rerankers/BGEReRanker.js.map +1 -0
- package/dist/rerankers/CohereReRanker.d.ts +65 -0
- package/dist/rerankers/CohereReRanker.d.ts.map +1 -0
- package/dist/rerankers/CohereReRanker.js +155 -0
- package/dist/rerankers/CohereReRanker.js.map +1 -0
- package/dist/rerankers/OpenAIReRanker.d.ts +62 -0
- package/dist/rerankers/OpenAIReRanker.d.ts.map +1 -0
- package/dist/rerankers/OpenAIReRanker.js +197 -0
- package/dist/rerankers/OpenAIReRanker.js.map +1 -0
- package/dist/rerankers/RerankerBudgetGuard.d.ts +54 -0
- package/dist/rerankers/RerankerBudgetGuard.d.ts.map +1 -0
- package/dist/rerankers/RerankerBudgetGuard.js +67 -0
- package/dist/rerankers/RerankerBudgetGuard.js.map +1 -0
- package/dist/rerankers/VoyageReRanker.d.ts +59 -0
- package/dist/rerankers/VoyageReRanker.d.ts.map +1 -0
- package/dist/rerankers/VoyageReRanker.js +184 -0
- package/dist/rerankers/VoyageReRanker.js.map +1 -0
- package/package.json +13 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySearchProvider.js","sourceRoot":"","sources":["../../src/generic/EntitySearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;;;;;;AAEH,OAAO,EAAqB,QAAQ,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"EntitySearchProvider.js","sourceRoot":"","sources":["../../src/generic/EntitySearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;;;;;;AAEH,OAAO,EAAqB,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;;;GAIG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,kBAAkB;IAArD;;QACa,eAAU,GAAiB,QAAQ,CAAC;IAmWxD,CAAC;;IAjWG;;;;OAIG;aACqB,oBAAe,GAAG,CAAC,AAAJ,CAAK;IAE5C;;;;;OAKG;aACqB,0BAAqB,GAAG,MAAM,AAAT,CAAU;IAEvD;;;;;;;;OAQG;IACI,KAAK,CAAC,MAAM,CACf,KAAa,EACb,IAAY,EACZ,OAAkC,EAClC,WAAqB,EACrB,gBAAmC;QAEnC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,GAAG,sBAAoB,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QACrE,IAAI,CAAC;YACD,gFAAgF;YAChF,MAAM,QAAQ,GAAG,gBAAgB,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;YAC/E,0EAA0E;YAC1E,uEAAuE;YACvE,uEAAuE;YACvE,mEAAmE;YACnE,8DAA8D;YAC9D,+DAA+D;YAC/D,wCAAwC;YACxC,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,kEAAkE;gBAClE,SAAS,CAAC,0FAA0F,CAAC,CAAC;gBACtG,OAAO,EAAE,CAAC;YACd,CAAC;YAED,oEAAoE;YACpE,wEAAwE;YACxE,oEAAoE;YACpE,sBAAsB;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzB,+EAA+E;YAC/E,kFAAkF;YAClF,+EAA+E;YAC/E,0DAA0D;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAEzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,SAAS,CAAC,8EAA8E,CAAC,CAAC;gBAC1F,OAAO,EAAE,CAAC;YACd,CAAC;YAED,qDAAqD;YACrD,SAAS,CAAC,mCAAmC,MAAM,CAAC,MAAM,kBAAkB,cAAc,IAAI,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrI,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC7C,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;oBACzE,SAAS,CAAC,aAAa,CAAC,CAAC,UAAU,MAAM,YAAY,CAAC,MAAM,uBAAuB,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACvL,CAAC;YACL,CAAC;YAED,8DAA8D;YAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEjF,uFAAuF;YACvF,uFAAuF;YACvF,qFAAqF;YACrF,uBAAuB;YACvB,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACrC,IAAI,CAAC,eAAe,CAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,IAAI,cAAc,EACvC,cAAc,EACd,WAAW,EACX,IAAI,CAAC,WAAW,CACnB,CACJ,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAClD,oFAAoF;YACpF,8EAA8E;YAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAElC,6CAA6C;YAC7C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB,CACzB,EAAqB,EACrB,gBAA8C,EAC9C,OAAkC;QAElC,IAAI,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YACrC,mDAAmD;YACnD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACpB,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO;gBACH,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;gBACxB,UAAU,EAAE,CAAC,CAAC,IAAI;aACI,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,qBAAqB,CACzB,EAAqB,EACrB,OAAkC;QAElC,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE7D,IAAI,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5E,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,eAAe,CACzB,UAAkB,EAClB,gBAAwB,EACxB,OAAe,EACf,WAAqB,EACrB,WAAoB;QAEpB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACtG,IAAI,KAAgD,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAqB,OAAO,CAAC,EAAE;YACtD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpB,QAAQ,CAAC,kCAAkC,sBAAoB,CAAC,qBAAqB,kBAAkB,UAAU,GAAG,CAAC,CAAC;gBACtH,OAAO,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC,EAAE,sBAAoB,CAAC,qBAAqB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACP,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC5B,UAAkB,EAClB,gBAAwB,EACxB,OAAe,EACf,WAAqB,EACrB,WAAoB;QAEpB,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA0B;gBACrD,UAAU,EAAE,UAAU;gBACtB,gBAAgB,EAAE,gBAAgB;gBAClC,WAAW,EAAE,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBACxE,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,QAAQ;aACvB,EAAE,WAAW,CAAC,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClB,QAAQ,CAAC,2CAA2C,UAAU,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC3F,OAAO,EAAE,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,0CAA0C,UAAU,MAAM,GAAG,EAAE,CAAC,CAAC;YAC1E,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,cAAc,CAClB,OAAkC,EAClC,UAAkB,EAClB,KAAa;QAEb,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvC,wDAAwD;QACxD,MAAM,YAAY,GAAG,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;QACpF,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAE/D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAExD,6DAA6D;YAC7D,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChE,aAAa,EAAE,CAAC;oBAChB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChD,cAAc,GAAG,IAAI,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,mEAAmE;YACnE,iFAAiF;YACjF,MAAM,UAAU,GAAG,aAAa,GAAG,qBAAqB,CAAC;YACzD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,eAAe;YAC7D,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,6BAA6B;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;YAEpD,OAAO;gBACH,EAAE,EAAE,QAAQ;gBACZ,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,eAAmC;gBAC/C,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,4BAA4B;gBAClE,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;gBACzD,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,UAAU,EAAE,IAAI,IAAI,SAAS;gBACzC,SAAS,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACK,YAAY,CAChB,MAA+B,EAC/B,UAAkI;QAElI,IAAI,UAAU,EAAE,CAAC;YACb,+BAA+B;YAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM;iBAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;iBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;YAEjE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU;qBACnB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;qBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;qBACjD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;YAED,4BAA4B;YAC5B,IAAI,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,sBAAsB;QACtB,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7E,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,MAAM,CAAC,KAAK,CAAW,CAAC;YACnC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,cAAc,CAClB,MAA+B,EAC/B,UAAwC;QAExC,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;gBACpC,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YAClE,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC,CAAC,CAAC,cAAc,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC3E,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,wBAAwB,CAAC,KAAa;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;;AAnWQ,oBAAoB;IADhC,aAAa,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;GAC7C,oBAAoB,CAoWhC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { UserInfo } from '@memberjunction/core';
|
|
12
12
|
import { BaseSearchProvider } from './ISearchProvider.js';
|
|
13
|
-
import { SearchSource, SearchFilters, SearchResultItem } from './search.types.js';
|
|
13
|
+
import { SearchSource, SearchFilters, SearchResultItem, ScopeConstraints } from './search.types.js';
|
|
14
14
|
import { SearchEnricher } from './SearchEnricher.js';
|
|
15
15
|
/**
|
|
16
16
|
* Provides full-text search using the MJ Metadata.FullTextSearch() method.
|
|
@@ -35,6 +35,6 @@ export declare class FullTextSearchProvider extends BaseSearchProvider {
|
|
|
35
35
|
* @param contextUser - The user performing the search
|
|
36
36
|
* @returns Scored result items from full-text search
|
|
37
37
|
*/
|
|
38
|
-
Search(query: string, topK: number, filters: SearchFilters | undefined, contextUser: UserInfo): Promise<SearchResultItem[]>;
|
|
38
|
+
Search(query: string, topK: number, filters: SearchFilters | undefined, contextUser: UserInfo, scopeConstraints?: ScopeConstraints): Promise<SearchResultItem[]>;
|
|
39
39
|
}
|
|
40
40
|
//# sourceMappingURL=FullTextSearchProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullTextSearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/FullTextSearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"FullTextSearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/FullTextSearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAA8B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAwB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAoB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,qBACa,sBAAuB,SAAQ,kBAAkB;IAC1D,SAAgB,UAAU,EAAE,YAAY,CAAc;IAEtD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAK;IAE5C,OAAO,CAAC,QAAQ,CAA+B;IAE/C,4EAA4E;IACrE,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIlD;;;;;;;;OAQG;IACU,MAAM,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,WAAW,EAAE,QAAQ,EACrB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAgEjC"}
|
|
@@ -47,19 +47,30 @@ let FullTextSearchProvider = class FullTextSearchProvider extends BaseSearchProv
|
|
|
47
47
|
* @param contextUser - The user performing the search
|
|
48
48
|
* @returns Scored result items from full-text search
|
|
49
49
|
*/
|
|
50
|
-
async Search(query, topK, filters, contextUser) {
|
|
50
|
+
async Search(query, topK, filters, contextUser, scopeConstraints) {
|
|
51
51
|
const trimmed = (query ?? '').trim();
|
|
52
52
|
if (trimmed.length < FullTextSearchProvider_1.MIN_TERM_LENGTH)
|
|
53
53
|
return [];
|
|
54
54
|
try {
|
|
55
|
+
// Honor per-provider query transform (keyword extraction / rewrite)
|
|
56
|
+
const effectiveQuery = scopeConstraints?.QueryTransforms?.[this.SourceType] ?? query;
|
|
57
|
+
// Restrict entities: scopeConstraints take precedence, then filters.EntityNames,
|
|
58
|
+
// then no restriction.
|
|
59
|
+
const scopedEntityNames = scopeConstraints?.Entities?.map(e => e.EntityName);
|
|
60
|
+
const restrictedEntityNames = scopedEntityNames?.length
|
|
61
|
+
? scopedEntityNames
|
|
62
|
+
: filters?.EntityNames;
|
|
63
|
+
// Multi-provider migration (v5.31+): use `this.Provider` instead of
|
|
64
|
+
// `new Metadata()`. Cast to IRunViewProvider to access FullTextSearch
|
|
65
|
+
// — only DB-backed providers expose it; remote providers don't.
|
|
55
66
|
const md = this.Provider;
|
|
56
67
|
if (!md.FullTextSearch) {
|
|
57
68
|
LogError('FullTextSearchProvider: provider does not support FullTextSearch');
|
|
58
69
|
return [];
|
|
59
70
|
}
|
|
60
71
|
const ftsResult = await md.FullTextSearch({
|
|
61
|
-
SearchText:
|
|
62
|
-
EntityNames:
|
|
72
|
+
SearchText: effectiveQuery,
|
|
73
|
+
EntityNames: restrictedEntityNames,
|
|
63
74
|
MaxRowsPerEntity: Math.max(3, Math.ceil(topK / 10))
|
|
64
75
|
}, contextUser);
|
|
65
76
|
if (!ftsResult.Success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullTextSearchProvider.js","sourceRoot":"","sources":["../../src/generic/FullTextSearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;;;;;;;AAEH,OAAO,EAAoB,QAAQ,
|
|
1
|
+
{"version":3,"file":"FullTextSearchProvider.js","sourceRoot":"","sources":["../../src/generic/FullTextSearchProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,20 @@
|
|
|
12
12
|
* @module @memberjunction/search-engine
|
|
13
13
|
*/
|
|
14
14
|
import { IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
15
|
-
import { SearchSource, SearchFilters, SearchResultItem } from './search.types.js';
|
|
15
|
+
import { SearchSource, SearchFilters, SearchResultItem, ScopeConstraints } from './search.types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Lightweight catalog entry for a registered search provider, returned by
|
|
18
|
+
* `BaseSearchProvider.GetAvailableProviders()`. Designed for UI dropdown
|
|
19
|
+
* population on the SearchScope form (P5.5) — a single call gives the form
|
|
20
|
+
* everything it needs to render selectable options without separately
|
|
21
|
+
* instantiating each registered class.
|
|
22
|
+
*/
|
|
23
|
+
export interface RegisteredSearchProviderInfo {
|
|
24
|
+
/** ClassFactory registration key — the SearchProvider.DriverClass column value */
|
|
25
|
+
DriverClass: string;
|
|
26
|
+
/** SearchSource the provider implements ('vector' | 'fulltext' | 'entity' | 'storage') */
|
|
27
|
+
SourceType: SearchSource;
|
|
28
|
+
}
|
|
16
29
|
/**
|
|
17
30
|
* Configuration passed to a search provider during initialization.
|
|
18
31
|
* Populated from the SearchProvider entity record.
|
|
@@ -81,13 +94,42 @@ export declare abstract class BaseSearchProvider {
|
|
|
81
94
|
/**
|
|
82
95
|
* Execute a search and return result items with scores.
|
|
83
96
|
*
|
|
97
|
+
* When `scopeConstraints` is provided, the provider MUST:
|
|
98
|
+
* 1. Narrow its retrieval surface to match the constraint (e.g., VectorSearchProvider
|
|
99
|
+
* queries only the listed ExternalIndexes with matching IndexType, EntitySearchProvider
|
|
100
|
+
* queries only the listed Entities, StorageSearchProvider queries only the listed
|
|
101
|
+
* accounts/folders, 3rd-party providers filter by their own IndexType).
|
|
102
|
+
* 2. Apply any rendered `MetadataFilter` / `ExtraFilter` / `UserSearchString` /
|
|
103
|
+
* `FolderPath` values as native filters.
|
|
104
|
+
* 3. Implement permission push-down (see Section 3.6 of
|
|
105
|
+
* plans/search-scopes-rag-plus.md) — never surface results the `contextUser` cannot see.
|
|
106
|
+
* 4. Honor `scopeConstraints.QueryTransforms` when a per-provider rewrite is supplied —
|
|
107
|
+
* look up by your `SourceType` or provider-specific key and use that string in place
|
|
108
|
+
* of the raw `query`.
|
|
109
|
+
*
|
|
110
|
+
* When `scopeConstraints` is undefined, the provider runs unconstrained (backward
|
|
111
|
+
* compatible pre-scope behavior).
|
|
112
|
+
*
|
|
84
113
|
* @param query - The search query text
|
|
85
114
|
* @param topK - Maximum number of results to retrieve
|
|
86
115
|
* @param filters - Optional filters to narrow results
|
|
87
116
|
* @param contextUser - The user performing the search
|
|
117
|
+
* @param scopeConstraints - Optional per-scope constraint set, pre-rendered with SearchContext values
|
|
88
118
|
* @returns Scored result items from this provider
|
|
89
119
|
*/
|
|
90
|
-
abstract Search(query: string, topK: number, filters: SearchFilters | undefined, contextUser: UserInfo): Promise<SearchResultItem[]>;
|
|
120
|
+
abstract Search(query: string, topK: number, filters: SearchFilters | undefined, contextUser: UserInfo, scopeConstraints?: ScopeConstraints): Promise<SearchResultItem[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Enumerate every search provider currently registered with ClassFactory under
|
|
123
|
+
* `BaseSearchProvider`. Designed for the SearchScope form's provider dropdown
|
|
124
|
+
* (P5.5) — populates the dropdown from this single call rather than hardcoding
|
|
125
|
+
* a list, so any ClassFactory-registered provider (including third-party ones)
|
|
126
|
+
* shows up automatically.
|
|
127
|
+
*
|
|
128
|
+
* Each entry includes the driver-class registration key (writes into
|
|
129
|
+
* `SearchProvider.DriverClass`) and the SourceType the provider implements.
|
|
130
|
+
* Sorted by DriverClass for stable UI ordering.
|
|
131
|
+
*/
|
|
132
|
+
static GetAvailableProviders(): RegisteredSearchProviderInfo[];
|
|
91
133
|
}
|
|
92
134
|
/**
|
|
93
135
|
* @deprecated Use BaseSearchProvider instead. Kept for backwards compatibility.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ISearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/ISearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ISearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/ISearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,iBAAiB,EAAsB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IACzC,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,UAAU,EAAE,YAAY,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,oEAAoE;IACpE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gFAAgF;IAChF,eAAe,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,kBAAkB;IACpC,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAE3C,8EAA8E;IAC9E,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAErD,2FAA2F;IAC3F,OAAO,CAAC,SAAS,CAAgC;IAEjD,iFAAiF;IACjF,IAAW,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,EAEvD;IAED,kGAAkG;IAClG,IAAW,QAAQ,IAAI,iBAAiB,CAEvC;IAED;;;;;;;OAOG;IACU,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3F;;;;;;;;OAQG;IACU,iBAAiB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;;OAGG;IACI,WAAW,IAAI,OAAO;IAI7B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,MAAM,CACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,WAAW,EAAE,QAAQ,EACrB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAE9B;;;;;;;;;;OAUG;WACW,qBAAqB,IAAI,4BAA4B,EAAE;CAoBxE;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module @memberjunction/search-engine
|
|
13
13
|
*/
|
|
14
|
-
import { Metadata } from '@memberjunction/core';
|
|
14
|
+
import { LogError, Metadata } from '@memberjunction/core';
|
|
15
|
+
import { MJGlobal } from '@memberjunction/global';
|
|
15
16
|
/**
|
|
16
17
|
* Abstract base class for search providers. Subclasses must be registered
|
|
17
18
|
* with @RegisterClass(BaseSearchProvider, 'DriverClassName') to be
|
|
@@ -67,5 +68,38 @@ export class BaseSearchProvider {
|
|
|
67
68
|
IsAvailable() {
|
|
68
69
|
return true;
|
|
69
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Enumerate every search provider currently registered with ClassFactory under
|
|
73
|
+
* `BaseSearchProvider`. Designed for the SearchScope form's provider dropdown
|
|
74
|
+
* (P5.5) — populates the dropdown from this single call rather than hardcoding
|
|
75
|
+
* a list, so any ClassFactory-registered provider (including third-party ones)
|
|
76
|
+
* shows up automatically.
|
|
77
|
+
*
|
|
78
|
+
* Each entry includes the driver-class registration key (writes into
|
|
79
|
+
* `SearchProvider.DriverClass`) and the SourceType the provider implements.
|
|
80
|
+
* Sorted by DriverClass for stable UI ordering.
|
|
81
|
+
*/
|
|
82
|
+
static GetAvailableProviders() {
|
|
83
|
+
const registrations = MJGlobal.Instance.ClassFactory.GetAllRegistrations(BaseSearchProvider);
|
|
84
|
+
const seen = new Set();
|
|
85
|
+
const out = [];
|
|
86
|
+
for (const reg of registrations) {
|
|
87
|
+
const key = reg.Key;
|
|
88
|
+
if (!key || seen.has(key))
|
|
89
|
+
continue;
|
|
90
|
+
seen.add(key);
|
|
91
|
+
try {
|
|
92
|
+
const Ctor = reg.SubClass;
|
|
93
|
+
const instance = new Ctor();
|
|
94
|
+
out.push({ DriverClass: key, SourceType: instance.SourceType });
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
LogError(`BaseSearchProvider.GetAvailableProviders: could not introspect "${key}" — ${err instanceof Error ? err.message : String(err)}`);
|
|
98
|
+
out.push({ DriverClass: key, SourceType: 'entity' });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
out.sort((a, b) => a.DriverClass.localeCompare(b.DriverClass));
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
70
104
|
}
|
|
71
105
|
//# sourceMappingURL=ISearchProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ISearchProvider.js","sourceRoot":"","sources":["../../src/generic/ISearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAqB,QAAQ,EAAY,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ISearchProvider.js","sourceRoot":"","sources":["../../src/generic/ISearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAqB,QAAQ,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAoClD;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,kBAAkB;IAAxC;QAII,8EAA8E;QACpE,WAAM,GAAgC,IAAI,CAAC;IAiHzD,CAAC;IA5GG,iFAAiF;IACjF,IAAW,QAAQ,CAAC,KAAoC;QACpD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,kGAAkG;IAClG,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,UAAU,CAAC,MAA4B,EAAE,WAAqB;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,iBAAiB,CAAC,WAAqB;QAChD,+CAA+C;IACnD,CAAC;IAED;;;OAGG;IACI,WAAW;QACd,OAAO,IAAI,CAAC;IAChB,CAAC;IAoCD;;;;;;;;;;OAUG;IACI,MAAM,CAAC,qBAAqB;QAC/B,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,GAAG,GAAmC,EAAE,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAmD,CAAC;gBACrE,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACpE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,QAAQ,CAAC,mEAAmE,GAAG,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1I,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC;IACf,CAAC;CACJ"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Default pass-through re-ranker.
|
|
3
|
+
*
|
|
4
|
+
* Returns the top-N candidates unchanged. Registered as `NoopReRanker` via the MJ
|
|
5
|
+
* class factory so the SearchEngine's re-rank stage always has a concrete class to
|
|
6
|
+
* instantiate, even when no provider-specific re-ranker is configured. Real
|
|
7
|
+
* implementations (Cohere, BGE, Voyage) can subclass `BaseReRanker` and register a
|
|
8
|
+
* separate `DriverClass`; a scope opts in by setting
|
|
9
|
+
* `SearchScope.ScopeConfig.reRanker.driverClass` to that name.
|
|
10
|
+
*
|
|
11
|
+
* See Section 8.3 of plans/search-scopes-rag-plus.md.
|
|
12
|
+
*
|
|
13
|
+
* @module @memberjunction/search-engine
|
|
14
|
+
*/
|
|
15
|
+
import { UserInfo } from '@memberjunction/core';
|
|
16
|
+
import { BaseReRanker } from './BaseReRanker.js';
|
|
17
|
+
import { SearchResultItem } from './search.types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Pass-through re-ranker. Slices to `topN` and returns the candidate order untouched.
|
|
20
|
+
*/
|
|
21
|
+
export declare class NoopReRanker extends BaseReRanker {
|
|
22
|
+
get DriverClass(): string;
|
|
23
|
+
ReRank(_query: string, candidates: SearchResultItem[], topN: number, _contextUser: UserInfo, _config?: Record<string, unknown>): Promise<SearchResultItem[]>;
|
|
24
|
+
}
|
|
25
|
+
/** Tree-shake prevention helper. Call from consumer `public-api.ts` to guarantee
|
|
26
|
+
* the registration side-effect runs. */
|
|
27
|
+
export declare function LoadNoopReRanker(): void;
|
|
28
|
+
//# sourceMappingURL=NoopReRanker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoopReRanker.d.ts","sourceRoot":"","sources":["../../src/generic/NoopReRanker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,qBACa,YAAa,SAAQ,YAAY;IAC1C,IAAW,WAAW,IAAI,MAAM,CAE/B;IAEY,MAAM,CACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,gBAAgB,EAAE,EAC9B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAKjC;AAED;wCACwC;AACxC,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Default pass-through re-ranker.
|
|
3
|
+
*
|
|
4
|
+
* Returns the top-N candidates unchanged. Registered as `NoopReRanker` via the MJ
|
|
5
|
+
* class factory so the SearchEngine's re-rank stage always has a concrete class to
|
|
6
|
+
* instantiate, even when no provider-specific re-ranker is configured. Real
|
|
7
|
+
* implementations (Cohere, BGE, Voyage) can subclass `BaseReRanker` and register a
|
|
8
|
+
* separate `DriverClass`; a scope opts in by setting
|
|
9
|
+
* `SearchScope.ScopeConfig.reRanker.driverClass` to that name.
|
|
10
|
+
*
|
|
11
|
+
* See Section 8.3 of plans/search-scopes-rag-plus.md.
|
|
12
|
+
*
|
|
13
|
+
* @module @memberjunction/search-engine
|
|
14
|
+
*/
|
|
15
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
16
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
17
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
18
|
+
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;
|
|
19
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
20
|
+
};
|
|
21
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
22
|
+
import { BaseReRanker } from './BaseReRanker.js';
|
|
23
|
+
/**
|
|
24
|
+
* Pass-through re-ranker. Slices to `topN` and returns the candidate order untouched.
|
|
25
|
+
*/
|
|
26
|
+
let NoopReRanker = class NoopReRanker extends BaseReRanker {
|
|
27
|
+
get DriverClass() {
|
|
28
|
+
return 'NoopReRanker';
|
|
29
|
+
}
|
|
30
|
+
async ReRank(_query, candidates, topN, _contextUser, _config) {
|
|
31
|
+
if (topN <= 0 || candidates.length === 0)
|
|
32
|
+
return [];
|
|
33
|
+
if (candidates.length <= topN)
|
|
34
|
+
return candidates;
|
|
35
|
+
return candidates.slice(0, topN);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
NoopReRanker = __decorate([
|
|
39
|
+
RegisterClass(BaseReRanker, 'NoopReRanker')
|
|
40
|
+
], NoopReRanker);
|
|
41
|
+
export { NoopReRanker };
|
|
42
|
+
/** Tree-shake prevention helper. Call from consumer `public-api.ts` to guarantee
|
|
43
|
+
* the registration side-effect runs. */
|
|
44
|
+
export function LoadNoopReRanker() {
|
|
45
|
+
// Reference to ensure the class is not eliminated by bundlers.
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
47
|
+
const _ref = NoopReRanker;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=NoopReRanker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoopReRanker.js","sourceRoot":"","sources":["../../src/generic/NoopReRanker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;;;;;;;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,YAAY;IAC1C,IAAW,WAAW;QAClB,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,MAAM,CACf,MAAc,EACd,UAA8B,EAC9B,IAAY,EACZ,YAAsB,EACtB,OAAiC;QAEjC,IAAI,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpD,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI;YAAE,OAAO,UAAU,CAAC;QACjD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACJ,CAAA;AAhBY,YAAY;IADxB,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC;GAC/B,YAAY,CAgBxB;;AAED;wCACwC;AACxC,MAAM,UAAU,gBAAgB;IAC5B,+DAA+D;IAC/D,6DAA6D;IAC7D,MAAM,IAAI,GAAG,YAAY,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Lightweight Nunjucks renderer for scope configuration values.
|
|
3
|
+
*
|
|
4
|
+
* `SearchScope*` tables store template strings (MetadataFilter, ExtraFilter,
|
|
5
|
+
* UserSearchString, FolderPath) that embed `SearchContext` variables — for example:
|
|
6
|
+
*
|
|
7
|
+
* `OrganizationID='{{ context.PrimaryScopeRecordID }}' AND DepartmentID='{{ context.SecondaryScopes.dept.value }}'`
|
|
8
|
+
*
|
|
9
|
+
* This module renders those strings with a minimal, pre-configured Nunjucks environment
|
|
10
|
+
* so the SearchEngine does not have to bootstrap the full `@memberjunction/templates`
|
|
11
|
+
* engine (which is intended for stored, managed templates, not ad-hoc config values).
|
|
12
|
+
*
|
|
13
|
+
* For stored template resolution (e.g., `AIAgentSearchScope.QueryTemplateID`,
|
|
14
|
+
* `SearchScopeProvider.QueryTransformTemplateID`) use `@memberjunction/templates` with
|
|
15
|
+
* `TemplateEngineServer` — that path runs in Phase 1C (AgentPreExecutionRAG) where we
|
|
16
|
+
* already have a stored-template workflow.
|
|
17
|
+
*
|
|
18
|
+
* @module @memberjunction/search-engine
|
|
19
|
+
*/
|
|
20
|
+
import { SearchContext } from './search.types.js';
|
|
21
|
+
/**
|
|
22
|
+
* Render a scope template string with the supplied SearchContext. Returns the original
|
|
23
|
+
* string unchanged when `template` is null/empty. Returns the original string on render
|
|
24
|
+
* failure (logged via LogError) so a single bad template does not bring down a search.
|
|
25
|
+
*/
|
|
26
|
+
export declare function RenderScopeTemplate(template: string | null | undefined, context: SearchContext | undefined, extraData?: Record<string, unknown>): string;
|
|
27
|
+
/**
|
|
28
|
+
* Render and parse a JSON-valued scope template (used for `MetadataFilter` values).
|
|
29
|
+
* Returns:
|
|
30
|
+
* - `undefined` when the template is null/empty
|
|
31
|
+
* - parsed object when render output is valid JSON
|
|
32
|
+
* - the raw rendered string when it is non-empty but not JSON (provider can decide what to do)
|
|
33
|
+
* - `undefined` when render fails outright
|
|
34
|
+
*/
|
|
35
|
+
export declare function RenderScopeJsonTemplate(template: string | null | undefined, context: SearchContext | undefined, extraData?: Record<string, unknown>): unknown;
|
|
36
|
+
//# sourceMappingURL=ScopeTemplateRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopeTemplateRenderer.d.ts","sourceRoot":"","sources":["../../src/generic/ScopeTemplateRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAwC/C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,MAAM,CAmBR;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,OAAO,CAWT"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Lightweight Nunjucks renderer for scope configuration values.
|
|
3
|
+
*
|
|
4
|
+
* `SearchScope*` tables store template strings (MetadataFilter, ExtraFilter,
|
|
5
|
+
* UserSearchString, FolderPath) that embed `SearchContext` variables — for example:
|
|
6
|
+
*
|
|
7
|
+
* `OrganizationID='{{ context.PrimaryScopeRecordID }}' AND DepartmentID='{{ context.SecondaryScopes.dept.value }}'`
|
|
8
|
+
*
|
|
9
|
+
* This module renders those strings with a minimal, pre-configured Nunjucks environment
|
|
10
|
+
* so the SearchEngine does not have to bootstrap the full `@memberjunction/templates`
|
|
11
|
+
* engine (which is intended for stored, managed templates, not ad-hoc config values).
|
|
12
|
+
*
|
|
13
|
+
* For stored template resolution (e.g., `AIAgentSearchScope.QueryTemplateID`,
|
|
14
|
+
* `SearchScopeProvider.QueryTransformTemplateID`) use `@memberjunction/templates` with
|
|
15
|
+
* `TemplateEngineServer` — that path runs in Phase 1C (AgentPreExecutionRAG) where we
|
|
16
|
+
* already have a stored-template workflow.
|
|
17
|
+
*
|
|
18
|
+
* @module @memberjunction/search-engine
|
|
19
|
+
*/
|
|
20
|
+
import nunjucks from 'nunjucks';
|
|
21
|
+
import { LogError } from '@memberjunction/core';
|
|
22
|
+
/** Environment used for all ad-hoc scope template rendering. */
|
|
23
|
+
const env = new nunjucks.Environment(null, {
|
|
24
|
+
autoescape: false, // values go into filters / metadata, not HTML
|
|
25
|
+
throwOnUndefined: false,
|
|
26
|
+
trimBlocks: true,
|
|
27
|
+
lstripBlocks: true
|
|
28
|
+
});
|
|
29
|
+
// Add the same JSON-oriented filters exposed by @memberjunction/templates so scope
|
|
30
|
+
// authors can use familiar helpers (`{{ foo | json }}`, `{{ raw | jsonparse }}`) when
|
|
31
|
+
// composing MetadataFilter strings.
|
|
32
|
+
env.addFilter('json', (value, indent = 2) => {
|
|
33
|
+
if (value === undefined || value === null)
|
|
34
|
+
return '';
|
|
35
|
+
try {
|
|
36
|
+
return JSON.stringify(value, null, indent);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return String(value);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
env.addFilter('jsoninline', (value) => {
|
|
43
|
+
if (value === undefined || value === null)
|
|
44
|
+
return '';
|
|
45
|
+
try {
|
|
46
|
+
return JSON.stringify(value);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return String(value);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
env.addFilter('jsonparse', (value) => {
|
|
53
|
+
if (typeof value !== 'string')
|
|
54
|
+
return value;
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(value);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Render a scope template string with the supplied SearchContext. Returns the original
|
|
64
|
+
* string unchanged when `template` is null/empty. Returns the original string on render
|
|
65
|
+
* failure (logged via LogError) so a single bad template does not bring down a search.
|
|
66
|
+
*/
|
|
67
|
+
export function RenderScopeTemplate(template, context, extraData) {
|
|
68
|
+
if (!template)
|
|
69
|
+
return '';
|
|
70
|
+
if (!template.includes('{{') && !template.includes('{%')) {
|
|
71
|
+
// No templating syntax — skip the renderer entirely
|
|
72
|
+
return template;
|
|
73
|
+
}
|
|
74
|
+
const data = {
|
|
75
|
+
context: context ?? {},
|
|
76
|
+
...(extraData ?? {})
|
|
77
|
+
};
|
|
78
|
+
try {
|
|
79
|
+
return env.renderString(template, data);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
83
|
+
LogError(`SearchEngine: Scope template render failed — returning raw template. Error: ${msg}. Template: ${template.substring(0, 200)}`);
|
|
84
|
+
return template;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Render and parse a JSON-valued scope template (used for `MetadataFilter` values).
|
|
89
|
+
* Returns:
|
|
90
|
+
* - `undefined` when the template is null/empty
|
|
91
|
+
* - parsed object when render output is valid JSON
|
|
92
|
+
* - the raw rendered string when it is non-empty but not JSON (provider can decide what to do)
|
|
93
|
+
* - `undefined` when render fails outright
|
|
94
|
+
*/
|
|
95
|
+
export function RenderScopeJsonTemplate(template, context, extraData) {
|
|
96
|
+
if (!template)
|
|
97
|
+
return undefined;
|
|
98
|
+
const rendered = RenderScopeTemplate(template, context, extraData);
|
|
99
|
+
const trimmed = rendered.trim();
|
|
100
|
+
if (!trimmed)
|
|
101
|
+
return undefined;
|
|
102
|
+
try {
|
|
103
|
+
return JSON.parse(trimmed);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Return the raw rendered string — providers can still interpret
|
|
107
|
+
return trimmed;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=ScopeTemplateRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopeTemplateRenderer.js","sourceRoot":"","sources":["../../src/generic/ScopeTemplateRenderer.ts"],"names":[],"mappings":"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"}
|