cry-search 2.0.2 → 2.1.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/CLAUDE.md +8 -2
- package/README.md +53 -0
- package/UNIVERSE.md +12 -0
- package/dist/common/numeric/createSearchArrayMetadata.d.ts +10 -0
- package/dist/common/numeric/createSearchArrayMetadata.d.ts.map +1 -1
- package/dist/common/numeric/matchMany.d.ts +111 -0
- package/dist/common/numeric/matchMany.d.ts.map +1 -0
- package/dist/common/numeric/prepareQueryVariants.d.ts +24 -0
- package/dist/common/numeric/prepareQueryVariants.d.ts.map +1 -1
- package/dist/common/numeric/searchAndRank.d.ts.map +1 -1
- package/dist/common/numeric/searchInData.d.ts.map +1 -1
- package/dist/common/numeric/syncSearchArrayMetadata.d.ts.map +1 -1
- package/dist/common/numeric/updateSearchMetadata.d.ts.map +1 -1
- package/dist/index.cjs +316 -112
- package/dist/index.d.cts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +316 -112
- package/dist/types/index.d.ts +65 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/compareTokenized.d.ts +24 -0
- package/dist/utils/compareTokenized.d.ts.map +1 -0
- package/dist/vet/data/enote.d.ts +40 -0
- package/dist/vet/data/enote.d.ts.map +1 -0
- package/dist/vet/data/znamke.gen.d.ts +41 -0
- package/dist/vet/data/znamke.gen.d.ts.map +1 -0
- package/dist/vet/index.cjs +2468 -0
- package/dist/vet/index.d.cts +24 -0
- package/dist/vet/index.d.ts +24 -0
- package/dist/vet/index.d.ts.map +1 -0
- package/dist/vet/index.js +2426 -0
- package/dist/vet/normalizatorji.d.ts +104 -0
- package/dist/vet/normalizatorji.d.ts.map +1 -0
- package/dist/vet/ocena.d.ts +46 -0
- package/dist/vet/ocena.d.ts.map +1 -0
- package/dist/vet/spec.d.ts +35 -0
- package/dist/vet/spec.d.ts.map +1 -0
- package/dist/vet/uparjanje.d.ts +72 -0
- package/dist/vet/uparjanje.d.ts.map +1 -0
- package/package.json +29 -11
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vet normalizatorji — jedro domenske logike za veterino.
|
|
3
|
+
*
|
|
4
|
+
* Vsak normalizator je `ValueNormalizer` (`{ fields?, fn }`), zato ga lahko
|
|
5
|
+
* uporabimo na obeh straneh: pri indeksiranju (`SearchableObjectSpec.valueNormalizers`)
|
|
6
|
+
* in pri poizvedbi (`SearchOpts.queryNormalizers`).
|
|
7
|
+
*
|
|
8
|
+
* Delitev dela (dogovorjeno v grillingu 2026-10-04):
|
|
9
|
+
*
|
|
10
|
+
* - **trdi žetoni** so tisto, kar bi morala imeti oba zapisa, da se ujameta:
|
|
11
|
+
* poenotene enote (`tbl`), preslikave znamk (`rc` → `royal canin`) in linije
|
|
12
|
+
* (`shn` → `royal canin shn`);
|
|
13
|
+
* - **količine, razponi, živalske vrste, dobavitelji in strokovne oznake** se iz
|
|
14
|
+
* besedila ODSTRANIJO in shranijo kot domenski razredi (`kolicina`, `razpon`,
|
|
15
|
+
* `vrsta`, `dobavitelj`, `oznaka`). Tako ne izločajo kandidatov (mehka semantika),
|
|
16
|
+
* razliko pa oceni domenski ocenjevalec (`ocena.ts`).
|
|
17
|
+
*
|
|
18
|
+
* Zakaj odstranjevanje: merjeno v praksi — če količina ostane žeton, artikel
|
|
19
|
+
* „Nexgard Spectra 15-30 kg 3 tbl“ ne najde „NEXGARD SPECTRA 1TABL“, ker poizvedba
|
|
20
|
+
* zahteva `3`; 745 od 904 artiklov je ostalo brez kandidata prav zaradi tega.
|
|
21
|
+
*/
|
|
22
|
+
import type { ValueNormalizer } from '../types';
|
|
23
|
+
/**
|
|
24
|
+
* Normalizira decimalke: `2,5 mg` → `2.5 mg`.
|
|
25
|
+
*
|
|
26
|
+
* cry-search decimalno vejico sicer pretvori v piko, a le kadar ni presledka za
|
|
27
|
+
* vejico; pri `2,5 mg/25 mg` se je zato „2,5“ izgubil (postal `25`). Ta popravek
|
|
28
|
+
* teče pred vsemi drugimi normalizatorji.
|
|
29
|
+
*/
|
|
30
|
+
export declare const decimalkeNormalizator: ValueNormalizer;
|
|
31
|
+
/**
|
|
32
|
+
* Poenoti enote: `tableta`, `tabl`, `tab`, `1TABL` → `tbl`; `ampul` → `amp`.
|
|
33
|
+
*
|
|
34
|
+
* Enote ostanejo v besedilu (trdi žetoni), ker jih imata oba zapisa: gre za
|
|
35
|
+
* *zapis* istega podatka, ne za dodaten podatek.
|
|
36
|
+
*/
|
|
37
|
+
export declare const enoteNormalizator: ValueNormalizer;
|
|
38
|
+
/**
|
|
39
|
+
* Količine, razponi in pakiranja → razredi, iz besedila odstranjeni.
|
|
40
|
+
*
|
|
41
|
+
* Razredi: `razpon` (`15-30`), `kolicina` (`4 ML`, `200 ML`), `pakiranje` (`3 TBL`).
|
|
42
|
+
* Ocena parov jih primerja (enako = bonus, nasprotno = kazen), zadetka pa ne
|
|
43
|
+
* zahtevajo — zato „3 tbl“ v enem in „1TABL“ v drugem nazivu ni ovira za kandidata.
|
|
44
|
+
*/
|
|
45
|
+
export declare const kolicinaNormalizator: ValueNormalizer;
|
|
46
|
+
/**
|
|
47
|
+
* Živalske vrste → razred `vrsta`, iz besedila odstranjene.
|
|
48
|
+
*
|
|
49
|
+
* Vrsta je močan razločevalnik (pasje proti mačjem izdelku), a jo nazivi navajajo
|
|
50
|
+
* nedosledno — zato razred (kazen ob nasprotju), ne trdi žeton.
|
|
51
|
+
*/
|
|
52
|
+
export declare const vrstaNormalizator: ValueNormalizer;
|
|
53
|
+
/**
|
|
54
|
+
* Znamke in linije: `RC` → `ROYAL CANIN`, `SHN` → `ROYAL CANIN SHN`, `N&D` → `NATURAL DELICIOUS`.
|
|
55
|
+
*
|
|
56
|
+
* Ostanejo trdi žetoni: preslikava mora veljati na obeh straneh, da se zapisa
|
|
57
|
+
* „RC Cat Urinary“ in „Royal Canin Cat Urinary“ ujameta.
|
|
58
|
+
*/
|
|
59
|
+
export declare const znamkaNormalizator: ValueNormalizer;
|
|
60
|
+
/**
|
|
61
|
+
* Dobavitelji (`IPH`-ju podobni) in strokovne oznake (`IPV`, `IPH`) → razred, iz besedila odstranjeni.
|
|
62
|
+
*
|
|
63
|
+
* Dogovor: oznako smemo odstraniti iz primerjave; če jo imata oba zapisa, je razred
|
|
64
|
+
* enak (brez kazni), če le eden, pa razlike ne štejemo kot vsebinsko.
|
|
65
|
+
*/
|
|
66
|
+
export declare const oznakeNormalizator: ValueNormalizer;
|
|
67
|
+
/**
|
|
68
|
+
* VELIKOST → razred `velikost`, beseda se odstrani.
|
|
69
|
+
*
|
|
70
|
+
* Enočrkovne velikosti (`s`, `m`, `l`) štejejo le, kadar niso del količine
|
|
71
|
+
* („40 l“ je volumen, ne velikost L); zato preverimo, da pred besedo ne stoji cifra.
|
|
72
|
+
*/
|
|
73
|
+
export declare const velikostNormalizator: ValueNormalizer;
|
|
74
|
+
/** Pantheonove oznake v nazivu: `**` = neaktiven artikel, `*` = prosta postavka. */
|
|
75
|
+
export declare const pantheonOznakaNormalizator: ValueNormalizer;
|
|
76
|
+
/**
|
|
77
|
+
* Kodirni artefakti iz izvozov (Excel/ODBC): `tuna_x001E_&rakci` → `tuna&rakci`.
|
|
78
|
+
* Take sekvence podrejo iskanje, ker dodajo žeton `x001e`, ki ga drug zapis nima.
|
|
79
|
+
*/
|
|
80
|
+
export declare const kodiranjeNormalizator: ValueNormalizer;
|
|
81
|
+
/**
|
|
82
|
+
* Tipske oznake (`PRIB`, `IGR`, `OVR`, `POS`, `OPR`, `TR` …) → iz besedila odstranjene
|
|
83
|
+
* (razred `tip`, ki ne vpliva na oceno). Razlog (izmerjeno): kot trdi žetoni so ovirale
|
|
84
|
+
* ISKANJE — „PRIB SLOW DOWN 2“ proti „POS SLOW DOWN 2“, „SEA JERKY“ proti „PRIB SEA JERKY“.
|
|
85
|
+
* Enočrkovne oznake (`A`, `M`, `S`) namenoma ostanejo: zanje skrbijo `velikost` in jedro.
|
|
86
|
+
*/
|
|
87
|
+
export declare const tipskeOznakeNormalizator: ValueNormalizer;
|
|
88
|
+
/**
|
|
89
|
+
* Vsi vet normalizatorji v pravem vrstnem redu.
|
|
90
|
+
*
|
|
91
|
+
* Vrstni red je pomemben: decimalke → enote → znamke → količine → vrste → oznake
|
|
92
|
+
* (znamke pred količinami, ker `RC` ni količina; količine pred vrstami, ker se
|
|
93
|
+
* `2 kg` ne sme razumeti kot vrsta).
|
|
94
|
+
*/
|
|
95
|
+
export declare const VET_NORMALIZATORJI: ValueNormalizer[];
|
|
96
|
+
/** Izvoz za teste in diagnostične skripte. */
|
|
97
|
+
export declare const VET_TABELA: {
|
|
98
|
+
okrajsave: Map<string, string>;
|
|
99
|
+
linije: Map<string, string>;
|
|
100
|
+
dobavitelji: Set<string>;
|
|
101
|
+
oznake: Set<string>;
|
|
102
|
+
vir: string;
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=normalizatorji.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizatorji.d.ts","sourceRoot":"","sources":["../../src/vet/normalizatorji.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIhD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAKnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAmB/B,CAAC;AAsCF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAmDlC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,eA0B/B,CAAC;AAsBF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAwBhC,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAkBhC,CAAC;AAGF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAiBlC,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,EAAE,eAUxC,CAAC;AAGF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAKnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAYtC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAW/C,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,UAAU;;;;;;CAMtB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Razredi, ki jih primerjamo (iz normalizatorjev). */
|
|
2
|
+
export interface VetRazredi {
|
|
3
|
+
razpon?: string | string[];
|
|
4
|
+
kolicina?: string | string[];
|
|
5
|
+
pakiranje?: string | string[];
|
|
6
|
+
vrsta?: string | string[];
|
|
7
|
+
/** Velikost (S/M/L/XL/XXL + mala/srednja/velika). */
|
|
8
|
+
velikost?: string | string[];
|
|
9
|
+
/** Pantheonova oznaka v nazivu: `neaktivno` (`**`), `prosto` (`*`). */
|
|
10
|
+
pantheon?: string | string[];
|
|
11
|
+
dobavitelj?: string | string[];
|
|
12
|
+
oznaka?: string | string[];
|
|
13
|
+
}
|
|
14
|
+
export interface VetOcena {
|
|
15
|
+
/** Skupna ocena (višja = bolje); 0 pomeni, da vratar ni spustil para. */
|
|
16
|
+
ocena: number;
|
|
17
|
+
/** Ali par prestane vratar IN pravilo pokritosti. */
|
|
18
|
+
sprejeto: boolean;
|
|
19
|
+
/** Človeško berljiva razlaga (za UI in dokumentacijo). */
|
|
20
|
+
razlog: string;
|
|
21
|
+
pokritostKandidata: number;
|
|
22
|
+
pokritostPoizvedbe: number;
|
|
23
|
+
/** Skupne cele besede (največ 5). */
|
|
24
|
+
skupneBesede: string[];
|
|
25
|
+
/** Nasprotja v razredih (npr. `razpon: 15-30 ≠ 7.5-15`). */
|
|
26
|
+
nasprotja: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface VetOcenaNastavitve {
|
|
29
|
+
/** Delež dolžine, pri katerem predpona šteje kot beseda (privzeto 0,8). */
|
|
30
|
+
predponaDelez?: number;
|
|
31
|
+
/** Zahtevana pokritost kandidata (privzeto 0,75). */
|
|
32
|
+
pokritostKandidata?: number;
|
|
33
|
+
/** Zahtevana pokritost poizvedbe (privzeto 0,5). */
|
|
34
|
+
pokritostPoizvedbe?: number;
|
|
35
|
+
/** Dodatni prag ocene (privzeto 0 — odloča pokritost). */
|
|
36
|
+
minOcena?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Oceni par dveh nazivov (surova naziva, ne normalizirana — normalizatorji veljajo
|
|
40
|
+
* za iskanje, ocena pa gleda dejanski zapis, ker pozna doze in enote).
|
|
41
|
+
*/
|
|
42
|
+
export declare function oceniPar(poizvedba: string, kandidat: string, nastavitve?: VetOcenaNastavitve, razredi?: {
|
|
43
|
+
poizvedba?: VetRazredi | Record<string, string | string[]>;
|
|
44
|
+
kandidat?: VetRazredi | Record<string, string | string[]>;
|
|
45
|
+
} | undefined): VetOcena;
|
|
46
|
+
//# sourceMappingURL=ocena.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ocena.d.ts","sourceRoot":"","sources":["../../src/vet/ocena.ts"],"names":[],"mappings":"AAsBA,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAoFD;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,kBAAuB,EACnC,OAAO,CAAC,EACJ;IAAE,SAAS,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;CAAE,GACzH,SAAS,GACZ,QAAQ,CA4FV"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vet spec: indeks in poizvedba z ISTIMI normalizatorji.
|
|
3
|
+
*
|
|
4
|
+
* Bistvo je simetrija — če bi se indeks in poizvedba normalizirala različno, bi se
|
|
5
|
+
* žetoni razhajali (npr. `RC` shranjen kot `RC`, poizvedba `Royal Canin`).
|
|
6
|
+
*/
|
|
7
|
+
import type { SearchOpts, SearchableObject, SearchableObjectSpec, ValueNormalizer } from '../types';
|
|
8
|
+
/** Nastavitve vet specifikacije. */
|
|
9
|
+
export interface VetSpecNastavitve {
|
|
10
|
+
/** Polja, ki se iščejo in rangirajo (privzeto `['naziv']`). */
|
|
11
|
+
polja?: readonly string[];
|
|
12
|
+
/** Polja za pozicijsko rangiranje (privzeto isto kot `polja`). */
|
|
13
|
+
keyFields?: readonly string[];
|
|
14
|
+
/** Največ žetonov za rangiranje (privzeto 8, kot v jedru). */
|
|
15
|
+
prviTokeni?: number;
|
|
16
|
+
/** Dodatni normalizatorji (tečejo za vet normalizatorji). */
|
|
17
|
+
dodatniNormalizatorji?: readonly ValueNormalizer[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Spec za klik.vet/Pantheon artikel (ali drugo veterinarsko zbirko).
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const data = arrayToSearchableData(artikli);
|
|
25
|
+
* const metadata = createSearchArrayMetadata(data, vetArtikelSpec());
|
|
26
|
+
* const opts = vetQueryOpts();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function vetArtikelSpec<T extends SearchableObject>(nastavitve?: VetSpecNastavitve): SearchableObjectSpec<T>;
|
|
30
|
+
/**
|
|
31
|
+
* Iskalne nastavitve za poizvedbo — isti normalizatorji kot pri indeksu.
|
|
32
|
+
* Uporabi jih vsak klic iskanja/uparjanja nad vet indeksom.
|
|
33
|
+
*/
|
|
34
|
+
export declare function vetQueryOpts(dodatni?: SearchOpts): SearchOpts;
|
|
35
|
+
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/vet/spec.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGpG,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,kEAAkE;IAClE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,gBAAgB,EACvD,UAAU,GAAE,iBAAsB,GACjC,oBAAoB,CAAC,CAAC,CAAC,CAQzB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,UAAe,GAAG,UAAU,CAEjE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { NumericSearchMetadata, SearchableData, SearchableObject, ValueNormalizer } from '../types';
|
|
2
|
+
import { oceniPar, type VetOcena } from './ocena';
|
|
3
|
+
/** Artikel z nazivom (klik.vet ali Pantheon zapis). */
|
|
4
|
+
export interface VetArtikel extends SearchableObject {
|
|
5
|
+
_id: string;
|
|
6
|
+
naziv: string;
|
|
7
|
+
}
|
|
8
|
+
/** Kandidat z vet oceno. */
|
|
9
|
+
export interface VetKandidat<T extends SearchableObject = VetArtikel> {
|
|
10
|
+
id: string;
|
|
11
|
+
item: T;
|
|
12
|
+
/** Ocena po `oceniPar` (višja = bolje). */
|
|
13
|
+
score: number;
|
|
14
|
+
/** Ali par prestane pravilo sprejema. */
|
|
15
|
+
sprejeto: boolean;
|
|
16
|
+
/** Razlaga in podrobnosti ocene. */
|
|
17
|
+
ocena: VetOcena;
|
|
18
|
+
/** Domenski razredi kandidata (razpon, kolicina, vrsta …). */
|
|
19
|
+
classes?: Record<string, string[]>;
|
|
20
|
+
}
|
|
21
|
+
/** Rezultat za en element leve strani. */
|
|
22
|
+
export interface VetPar<T extends SearchableObject = VetArtikel> {
|
|
23
|
+
id: string;
|
|
24
|
+
kandidati: VetKandidat<T>[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Zožene poizvedbe: kadar glavna poizvedba ne da sprejetega kandidata, poskusimo
|
|
28
|
+
* še različice z enim odbitim žetonom. Vrstni red je od najmanj informativnih
|
|
29
|
+
* (števila in kratki žetoni) proti daljšim besedam; vsak kandidat mora še vedno
|
|
30
|
+
* prestati `oceniPar`, zato natančnost ne more pasti.
|
|
31
|
+
*
|
|
32
|
+
* @param naziv - Surov naziv (klik.vet ali Pantheon).
|
|
33
|
+
* @param najvec - Največ poskusov (privzeto 4).
|
|
34
|
+
*/
|
|
35
|
+
export declare function zoziPoizvedbo(naziv: string, najvec?: number): string[];
|
|
36
|
+
export interface VetUparjanjeNastavitve {
|
|
37
|
+
/** Največ kandidatov na artikel (privzeto 3). */
|
|
38
|
+
limit?: number;
|
|
39
|
+
/** Koliko kandidatov prebere jedro, preden oceni domena (privzeto `max(20, limit*4)`). */
|
|
40
|
+
retrievalLimit?: number;
|
|
41
|
+
/** Velikost kosa izhodnega iteratorja (privzeto 50). */
|
|
42
|
+
kos?: number;
|
|
43
|
+
/** Poželjiva 1:1 dodelitev (vsak pantheonov artikel porabljen največ enkrat). */
|
|
44
|
+
samoEnolicno?: boolean;
|
|
45
|
+
/** Prag pokritosti in ocene (glej `ocena.ts`). */
|
|
46
|
+
ocena?: Parameters<typeof oceniPar>[2];
|
|
47
|
+
/** Dodatni normalizatorji (redko potrebno). */
|
|
48
|
+
dodatniNormalizatorji?: readonly ValueNormalizer[];
|
|
49
|
+
/** Ali naj se poskusi drugi prehod z zoženo poizvedbo (privzeto da). */
|
|
50
|
+
zozenaPoizvedba?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/** Pripravi indeks desne strani (npr. Pantheonovi artikli). */
|
|
53
|
+
export declare function pripraviVetIndeks<T extends VetArtikel>(artikli: readonly T[], nastavitve?: {
|
|
54
|
+
polja?: readonly string[];
|
|
55
|
+
}): {
|
|
56
|
+
data: SearchableData<T>;
|
|
57
|
+
metadata: NumericSearchMetadata;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Upari artikle po kosih. Za vsak element vrne največ `limit` kandidatov,
|
|
61
|
+
* urejenih po vet oceni; `sprejeto` pove, ali par prestane pravilo sprejema.
|
|
62
|
+
*/
|
|
63
|
+
export declare function upariArtikle<T extends VetArtikel>(prepared: {
|
|
64
|
+
data: SearchableData<T>;
|
|
65
|
+
metadata: NumericSearchMetadata;
|
|
66
|
+
}, artikli: readonly VetArtikel[], nastavitve?: VetUparjanjeNastavitve): AsyncGenerator<VetPar<T>[], void, void>;
|
|
67
|
+
/** Zbere vse pare (za teste in manjše nabore). */
|
|
68
|
+
export declare function upariVse<T extends VetArtikel>(prepared: {
|
|
69
|
+
data: SearchableData<T>;
|
|
70
|
+
metadata: NumericSearchMetadata;
|
|
71
|
+
}, artikli: readonly VetArtikel[], nastavitve?: VetUparjanjeNastavitve): Promise<VetPar<T>[]>;
|
|
72
|
+
//# sourceMappingURL=uparjanje.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uparjanje.d.ts","sourceRoot":"","sources":["../../src/vet/uparjanje.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKlD,uDAAuD;AACvD,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4BAA4B;AAC5B,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,gBAAgB,GAAG,UAAU;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,CAAC,CAAC;IACR,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,KAAK,EAAE,QAAQ,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,0CAA0C;AAC1C,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,gBAAgB,GAAG,UAAU;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,EAAE,CAoBjE;AAED,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,+CAA+C;IAC/C,qBAAqB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACnD,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACpD,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,UAAU,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GAC7C;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,qBAAqB,CAAA;CAAE,CAO9D;AAED;;;GAGG;AACH,wBAAuB,YAAY,CAAC,CAAC,SAAS,UAAU,EACtD,QAAQ,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,qBAAqB,CAAA;CAAE,EACtE,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,UAAU,GAAE,sBAA2B,GACtC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAkFzC;AAED,kDAAkD;AAClD,wBAAsB,QAAQ,CAAC,CAAC,SAAS,UAAU,EACjD,QAAQ,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,qBAAqB,CAAA;CAAE,EACtE,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,UAAU,GAAE,sBAA2B,GACtC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAItB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cry-search",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
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",
|
|
@@ -16,6 +16,16 @@
|
|
|
16
16
|
"types": "./dist/index.d.cts",
|
|
17
17
|
"default": "./dist/index.cjs"
|
|
18
18
|
}
|
|
19
|
+
},
|
|
20
|
+
"./vet": {
|
|
21
|
+
"import": {
|
|
22
|
+
"types": "./dist/vet/index.d.ts",
|
|
23
|
+
"default": "./dist/vet/index.js"
|
|
24
|
+
},
|
|
25
|
+
"require": {
|
|
26
|
+
"types": "./dist/vet/index.d.cts",
|
|
27
|
+
"default": "./dist/vet/index.cjs"
|
|
28
|
+
}
|
|
19
29
|
}
|
|
20
30
|
},
|
|
21
31
|
"files": [
|
|
@@ -27,13 +37,16 @@
|
|
|
27
37
|
],
|
|
28
38
|
"scripts": {
|
|
29
39
|
"build": "bun run build:js && bun run build:types",
|
|
30
|
-
"build:esm": "bun build ./src/index.ts --outdir ./dist --target browser --format esm",
|
|
31
|
-
"build:cjs": "bun build ./src/index.ts --target browser --format cjs --outfile ./dist/index.cjs",
|
|
40
|
+
"build:esm": "bun build ./src/index.ts --outdir ./dist --target browser --format esm && bun build ./src/vet/index.ts --external cry-vetzdravila --outdir ./dist/vet --target browser --format esm",
|
|
41
|
+
"build:cjs": "bun build ./src/index.ts --target browser --format cjs --outfile ./dist/index.cjs && bun build ./src/vet/index.ts --external cry-vetzdravila --target browser --format cjs --outfile ./dist/vet/index.cjs",
|
|
32
42
|
"build:js": "bun run build:esm && bun run build:cjs",
|
|
33
|
-
"build:types": "tsc -p tsconfig.build.json && cp ./dist/index.d.ts ./dist/index.d.cts",
|
|
43
|
+
"build:types": "tsc -p tsconfig.build.json && cp ./dist/index.d.ts ./dist/index.d.cts && cp ./dist/vet/index.d.ts ./dist/vet/index.d.cts",
|
|
34
44
|
"clean": "rm -rf dist",
|
|
35
45
|
"test": "bun test",
|
|
36
|
-
"
|
|
46
|
+
"typecheck": "tsc --noEmit",
|
|
47
|
+
"gen:vet-data": "bun run scripts/gen-vet-data.ts",
|
|
48
|
+
"prepublishOnly": "bun run clean && bun run build",
|
|
49
|
+
"pripravi:pari": "bun run scripts/pripravi-pari.ts"
|
|
37
50
|
},
|
|
38
51
|
"keywords": [
|
|
39
52
|
"search",
|
|
@@ -51,17 +64,22 @@
|
|
|
51
64
|
"url": ""
|
|
52
65
|
},
|
|
53
66
|
"devDependencies": {
|
|
54
|
-
"@types/bun": "latest"
|
|
67
|
+
"@types/bun": "latest",
|
|
68
|
+
"bun-types": "^1.3.6",
|
|
69
|
+
"typescript": "^5.9.3",
|
|
70
|
+
"undici-types": "^7.16.0",
|
|
71
|
+
"cry-vetzdravila": "1.0.36"
|
|
55
72
|
},
|
|
56
73
|
"peerDependencies": {
|
|
57
|
-
"typescript": "^5"
|
|
74
|
+
"typescript": "^5",
|
|
75
|
+
"cry-vetzdravila": "^1.0.36"
|
|
58
76
|
},
|
|
59
77
|
"directories": {
|
|
60
78
|
"test": "test"
|
|
61
79
|
},
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
|
|
80
|
+
"peerDependenciesMeta": {
|
|
81
|
+
"cry-vetzdravila": {
|
|
82
|
+
"optional": true
|
|
83
|
+
}
|
|
66
84
|
}
|
|
67
85
|
}
|