cry-search 2.0.2 → 2.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/dist/index.cjs +17 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/utils/compareTokenized.d.ts +24 -0
- package/dist/utils/compareTokenized.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -89,6 +89,7 @@ __export(exports_src, {
|
|
|
89
89
|
createTokensMap: () => createTokensMap,
|
|
90
90
|
createSearchLinkedMetadata: () => createSearchLinkedMetadataNumeric,
|
|
91
91
|
createSearchArrayMetadata: () => createSearchArrayMetadataNumeric,
|
|
92
|
+
compareTokenized: () => compareTokenized,
|
|
92
93
|
clearTokensMap: () => clearTokensMap,
|
|
93
94
|
binarySearchUint32: () => binarySearchUint32,
|
|
94
95
|
arrayToSearchableData: () => arrayToSearchableData,
|
|
@@ -319,6 +320,22 @@ function prepareStringForSearch(input) {
|
|
|
319
320
|
const tokens = tokenize(sanitised, DEFAULT_TOKENIZE_CONFIG);
|
|
320
321
|
return tokens.sort();
|
|
321
322
|
}
|
|
323
|
+
// src/utils/compareTokenized.ts
|
|
324
|
+
function compareTokenized(a, b) {
|
|
325
|
+
const aTokens = new Set(prepareStringForSearch(a));
|
|
326
|
+
const bTokens = new Set(prepareStringForSearch(b));
|
|
327
|
+
if (aTokens.size === 0 && bTokens.size === 0)
|
|
328
|
+
return 1;
|
|
329
|
+
let intersection = 0;
|
|
330
|
+
for (const token of aTokens) {
|
|
331
|
+
if (bTokens.has(token))
|
|
332
|
+
intersection++;
|
|
333
|
+
}
|
|
334
|
+
const union = aTokens.size + bTokens.size - intersection;
|
|
335
|
+
if (union === 0)
|
|
336
|
+
return 0;
|
|
337
|
+
return intersection / union;
|
|
338
|
+
}
|
|
322
339
|
// src/utils/phoneNormalization.ts
|
|
323
340
|
var RE_ASCII_DIGITS = /^[0-9]+$/;
|
|
324
341
|
var RE_PHONE_LIKE_QUERY = /^[\d+()/\-. ]+$/;
|
package/dist/index.d.cts
CHANGED
|
@@ -11,6 +11,7 @@ export { preprocessString } from './utils/preprocessString';
|
|
|
11
11
|
export { sanitiseString } from './utils/sanitiseString';
|
|
12
12
|
export { tokenize } from './utils/tokenize';
|
|
13
13
|
export { normalizeDates } from './utils/normalizeDates';
|
|
14
|
+
export { compareTokenized } from './utils/compareTokenized';
|
|
14
15
|
export { defaultPhoneNormalizer, defaultQueryPhoneNormalizer, resolvePhoneQueryNormalizer, } from './utils/phoneNormalization';
|
|
15
16
|
export { tokens, getTokenCount, getTokenById, findTokenId, registerToken, getOrCreateTokenId, createTokensMap, clearTokensMap, resetTokenRegistry, } from './utils/tokenRegistry';
|
|
16
17
|
export { createSearchArrayMetadataNumeric as createSearchArrayMetadata, prepareObjectForSearchNumeric as prepareObjectForSearch, encodeTokenWithMode, decodeTokenId, decodeMatchMode, TOKEN_ID_MASK, MATCH_MODE_BITS, MATCH_MODE_PREFIXES, PREFIX_TO_MATCH_MODE, isDeletedOrBlocked, } from './common/numeric/createSearchArrayMetadata';
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export { preprocessString } from './utils/preprocessString';
|
|
|
11
11
|
export { sanitiseString } from './utils/sanitiseString';
|
|
12
12
|
export { tokenize } from './utils/tokenize';
|
|
13
13
|
export { normalizeDates } from './utils/normalizeDates';
|
|
14
|
+
export { compareTokenized } from './utils/compareTokenized';
|
|
14
15
|
export { defaultPhoneNormalizer, defaultQueryPhoneNormalizer, resolvePhoneQueryNormalizer, } from './utils/phoneNormalization';
|
|
15
16
|
export { tokens, getTokenCount, getTokenById, findTokenId, registerToken, getOrCreateTokenId, createTokensMap, clearTokensMap, resetTokenRegistry, } from './utils/tokenRegistry';
|
|
16
17
|
export { createSearchArrayMetadataNumeric as createSearchArrayMetadata, prepareObjectForSearchNumeric as prepareObjectForSearch, encodeTokenWithMode, decodeTokenId, decodeMatchMode, TOKEN_ID_MASK, MATCH_MODE_BITS, MATCH_MODE_PREFIXES, PREFIX_TO_MATCH_MODE, isDeletedOrBlocked, } from './common/numeric/createSearchArrayMetadata';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -212,6 +212,22 @@ function prepareStringForSearch(input) {
|
|
|
212
212
|
const tokens = tokenize(sanitised, DEFAULT_TOKENIZE_CONFIG);
|
|
213
213
|
return tokens.sort();
|
|
214
214
|
}
|
|
215
|
+
// src/utils/compareTokenized.ts
|
|
216
|
+
function compareTokenized(a, b) {
|
|
217
|
+
const aTokens = new Set(prepareStringForSearch(a));
|
|
218
|
+
const bTokens = new Set(prepareStringForSearch(b));
|
|
219
|
+
if (aTokens.size === 0 && bTokens.size === 0)
|
|
220
|
+
return 1;
|
|
221
|
+
let intersection = 0;
|
|
222
|
+
for (const token of aTokens) {
|
|
223
|
+
if (bTokens.has(token))
|
|
224
|
+
intersection++;
|
|
225
|
+
}
|
|
226
|
+
const union = aTokens.size + bTokens.size - intersection;
|
|
227
|
+
if (union === 0)
|
|
228
|
+
return 0;
|
|
229
|
+
return intersection / union;
|
|
230
|
+
}
|
|
215
231
|
// src/utils/phoneNormalization.ts
|
|
216
232
|
var RE_ASCII_DIGITS = /^[0-9]+$/;
|
|
217
233
|
var RE_PHONE_LIKE_QUERY = /^[\d+()/\-. ]+$/;
|
|
@@ -2171,6 +2187,7 @@ export {
|
|
|
2171
2187
|
createTokensMap,
|
|
2172
2188
|
createSearchLinkedMetadataNumeric as createSearchLinkedMetadata,
|
|
2173
2189
|
createSearchArrayMetadataNumeric as createSearchArrayMetadata,
|
|
2190
|
+
compareTokenized,
|
|
2174
2191
|
clearTokensMap,
|
|
2175
2192
|
binarySearchUint32,
|
|
2176
2193
|
arrayToSearchableData,
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two strings by their tokenized forms and returns the Jaccard
|
|
3
|
+
* similarity of their token sets: a number between `0` (no tokens in common)
|
|
4
|
+
* and `1` (identical token sets). Order-independent and case/diacritics
|
|
5
|
+
* insensitive, because both sides go through the same search pipeline as the
|
|
6
|
+
* rest of the library (normalizeDates → preprocess → sanitise → tokenize with
|
|
7
|
+
* the default replacements/removals).
|
|
8
|
+
*
|
|
9
|
+
* Both empty strings are considered identical (`1`); an empty vs non-empty
|
|
10
|
+
* string yields `0`.
|
|
11
|
+
*
|
|
12
|
+
* @param a - First string to compare.
|
|
13
|
+
* @param b - Second string to compare.
|
|
14
|
+
* @returns Similarity ratio `0..1` (matching tokens / union of tokens).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* compareTokenized('Janez Novak', 'novak janez'); // 1
|
|
19
|
+
* compareTokenized('Janes Novak', 'novak'); // 0.5
|
|
20
|
+
* compareTokenized('Janez Novak', 'ana'); // 0
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function compareTokenized(a: string, b: string): number;
|
|
24
|
+
//# sourceMappingURL=compareTokenized.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compareTokenized.d.ts","sourceRoot":"","sources":["../../src/utils/compareTokenized.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAc7D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cry-search",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "A fast, memory-efficient search library for large datasets with support for tokenized matching, linked collections, and per-field match modes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|