@ycookiey/yfuzzy 0.4.0 → 0.5.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/README.md +14 -0
- package/dist/entry.d.ts +12 -0
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +18 -3
- package/dist/entry.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/lattice.d.ts +9 -0
- package/dist/lattice.d.ts.map +1 -1
- package/dist/lattice.js +38 -2
- package/dist/lattice.js.map +1 -1
- package/dist/matches.d.ts +5 -0
- package/dist/matches.d.ts.map +1 -1
- package/dist/matches.js +3 -3
- package/dist/matches.js.map +1 -1
- package/dist/pipeline.d.ts +2 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +46 -0
- package/dist/pipeline.js.map +1 -1
- package/dist/query.d.ts +6 -0
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +13 -1
- package/dist/query.js.map +1 -1
- package/dist/romaji/convert.d.ts +2 -0
- package/dist/romaji/convert.d.ts.map +1 -1
- package/dist/romaji/convert.js +8 -0
- package/dist/romaji/convert.js.map +1 -1
- package/dist/terms.d.ts +20 -0
- package/dist/terms.d.ts.map +1 -0
- package/dist/terms.js +199 -0
- package/dist/terms.js.map +1 -0
- package/dist/tiers/tier1-exact.d.ts +31 -1
- package/dist/tiers/tier1-exact.d.ts.map +1 -1
- package/dist/tiers/tier1-exact.js +255 -153
- package/dist/tiers/tier1-exact.js.map +1 -1
- package/dist/tiers/tier2-flexible.d.ts.map +1 -1
- package/dist/tiers/tier2-flexible.js +3 -1
- package/dist/tiers/tier2-flexible.js.map +1 -1
- package/dist/tiers/tier3-typo.d.ts.map +1 -1
- package/dist/tiers/tier3-typo.js +17 -12
- package/dist/tiers/tier3-typo.js.map +1 -1
- package/dist/tiers/tier4-structural.js +1 -1
- package/dist/tiers/tier4-structural.js.map +1 -1
- package/dist/tiers/types.d.ts +4 -1
- package/dist/tiers/types.d.ts.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/yfuzzy.min.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -125,6 +125,17 @@ const r = search('keki', ['ケーキ'], { includeMatches: true });
|
|
|
125
125
|
|
|
126
126
|
同点のときは literal の結果を採る(ハイライトが入力した文字の位置になる)。
|
|
127
127
|
|
|
128
|
+
ローマ字で長音を打った入力(`saabaa`・IME 式の `sa-ba-`)も、長音「ー」を含む item に直接一致する(打ちかけの `saab` でも当たる)。長音の位置を印にして照合するので、長音のない別の語(`obaasan` に対する オバサン)には当たらない。長音を省いた入力(`saba`)は従来どおり当たる。
|
|
129
|
+
|
|
130
|
+
### 複数の語
|
|
131
|
+
|
|
132
|
+
空白で区切ったクエリは、すべての語を含む item に絞る(語の順番は問わない。`cal goo` → `Google Calendar`)。
|
|
133
|
+
|
|
134
|
+
- 各語は直接一致(tier 1)だけを認める。1 文字の語は item の先頭か単語の頭からの一致だけ
|
|
135
|
+
- 別の語は別の単語に当たる(`claude c` の `c` は `Claude` 自身には当てない)
|
|
136
|
+
- score は最も弱い語の score。空白込みのクエリ全体としての一致と比べて高いほうを採る(並びどおり現れる item は今までどおり当たる)
|
|
137
|
+
- 並びは tier → 最も弱い語の段(下の tier 1 の段)→ 語の順番どおりか → 長さ
|
|
138
|
+
|
|
128
139
|
### tier
|
|
129
140
|
|
|
130
141
|
クエリは tier 1 から順に評価され、最初に一致した tier で確定する(既定は tier 1〜3。`maxTier: 4` で tier 4 も有効化)。`score` は 0〜1 で、上の tier ほど高い。
|
|
@@ -178,10 +189,13 @@ type SearchResult<T> = {
|
|
|
178
189
|
refIndex: number; // items 内の位置
|
|
179
190
|
score: number; // 0〜1、高いほど良い
|
|
180
191
|
tier: 1 | 2 | 3 | 4;
|
|
192
|
+
kind: MatchKind; // 一致の種類(下)
|
|
181
193
|
matches?: readonly [number, number][]; // includeMatches 時、tier 1/2 のみ
|
|
182
194
|
};
|
|
183
195
|
```
|
|
184
196
|
|
|
197
|
+
`kind` は一致の種類。tier 1 は `'prefix'`(item の先頭から)・`'word'`(単語の頭から)・`'initials'`(各単語の頭文字)・`'inner'`(単語の途中)、tier 2 は `'subsequence'`、tier 3 は `'typo'`、tier 4 は `'similar'`。複数の語のクエリでは、語ごとの一致を採用したときは最も弱い語の種類、空白込みの全体の一致を採用したときはその一致の種類。例えば長い文字列で偶然そろう頭文字の一致を除きたいときは `kind !== 'initials'` で絞る。
|
|
198
|
+
|
|
185
199
|
## 性能
|
|
186
200
|
|
|
187
201
|
短い文字列の索引向け(数百〜数十万件)。内部の前段フィルタと早期打ち切りにより、1 クエリの実測値は千件で約 1.5ms、1 万件で約 10ms、10 万件で約 90ms(環境依存)。同条件で fuse.js より高速。英字の item をかなを含むクエリで探すときは打鍵の照合が加わり、1.5〜2 倍程度になる。`maxTier` を下げる、または `romaji` を一方の方式だけに絞ると更に軽くなる。索引構築は 10 万件で約 0.7 秒(一度きり)。
|
package/dist/entry.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export interface IndexEntry {
|
|
|
14
14
|
/** romaji 空間の単語の頭(単語の頭のかなから始まる音節の先頭。tier 1 の段、spec 4.1) */
|
|
15
15
|
readonly kunreiHeads: ReadonlySet<number>;
|
|
16
16
|
readonly hepburnHeads: ReadonlySet<number>;
|
|
17
|
+
/** 上の各単語の頭の昇順の一覧(tier 1 の頭文字の一致用) */
|
|
18
|
+
readonly kanaHeadList: readonly number[];
|
|
19
|
+
readonly kunreiHeadList: readonly number[];
|
|
20
|
+
readonly hepburnHeadList: readonly number[];
|
|
17
21
|
/** 各空間の文字集合マスク(前置フィルタ用、空間が無効なら 0) */
|
|
18
22
|
readonly kanaMask: number;
|
|
19
23
|
readonly kunreiMask: number;
|
|
@@ -22,6 +26,14 @@ export interface IndexEntry {
|
|
|
22
26
|
readonly kunrei: RomajiForm | null;
|
|
23
27
|
/** ヘボン式 RomajiForm(romaji オプションで無効時 null) */
|
|
24
28
|
readonly hepburn: RomajiForm | null;
|
|
29
|
+
/**
|
|
30
|
+
* 長音の位置に印(-)を残したローマ字(spec 2.2)。長音「ー」を含む item だけ(それ以外は null)。
|
|
31
|
+
* ー を - に置き換えたかなを変換する(1 文字どうしの置き換えなので kana との位置の対応はそのまま)
|
|
32
|
+
*/
|
|
33
|
+
readonly long: RomajiForm | null;
|
|
34
|
+
readonly longHeads: ReadonlySet<number>;
|
|
35
|
+
readonly longHeadList: readonly number[];
|
|
36
|
+
readonly longMask: number;
|
|
25
37
|
/** 打鍵の文字(英小文字・'・-)を含むか。含まなければ打鍵ラティスの打鍵経路は一致し得ない */
|
|
26
38
|
readonly hasKeystrokeChar: boolean;
|
|
27
39
|
/** bigram 集合(tier 4 用、遅延生成) */
|
package/dist/entry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAI9E,8BAA8B;AAC9B,MAAM,WAAW,UAAU;IACzB,iBAAiB;IACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,qCAAqC;IACrC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,+BAA+B;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC7B;AA8BD,yBAAyB;AACzB,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAgC1F;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAG5D"}
|
package/dist/entry.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// データ側派生表現(spec 2.3)。Index 構築時に item ごとの正規化・ローマ字を事前計算する。
|
|
2
2
|
// bigram は maxTier:4 が per-call で要否不明のため遅延生成(spec 判断メモ)。
|
|
3
3
|
import { normalize } from './normalize.js';
|
|
4
|
-
import { KUNREI, HEPBURN, kunreiEnabled, hepburnEnabled, } from './romaji/convert.js';
|
|
4
|
+
import { KUNREI, HEPBURN, kunreiEnabled, hepburnEnabled, longVowelTable, } from './romaji/convert.js';
|
|
5
5
|
import { toRomajiForm, kanaBoundaries } from './syllable.js';
|
|
6
6
|
import { generateBigrams } from './bigram.js';
|
|
7
7
|
import { charMask } from './charmask.js';
|
|
@@ -31,19 +31,34 @@ function romajiHeads(form, heads) {
|
|
|
31
31
|
out.add(s.romajiStart);
|
|
32
32
|
return out;
|
|
33
33
|
}
|
|
34
|
+
function sorted(set) {
|
|
35
|
+
return [...set].sort((a, b) => a - b);
|
|
36
|
+
}
|
|
34
37
|
/** 1 item からエントリを構築する */
|
|
35
38
|
export function buildEntry(raw, refIndex, romaji) {
|
|
36
39
|
const kana = normalize(raw);
|
|
37
40
|
const kunrei = kunreiEnabled(romaji) ? toRomajiForm(kana.text, KUNREI) : null;
|
|
38
41
|
const hepburn = hepburnEnabled(romaji) ? toRomajiForm(kana.text, HEPBURN) : null;
|
|
39
42
|
const heads = wordHeads(kana, raw);
|
|
43
|
+
const kunreiHeads = romajiHeads(kunrei, heads);
|
|
44
|
+
const hepburnHeads = romajiHeads(hepburn, heads);
|
|
45
|
+
const longTable = longVowelTable(romaji);
|
|
46
|
+
const long = longTable !== null && kana.text.includes('ー') ? toRomajiForm(kana.text.replaceAll('ー', '-'), longTable) : null;
|
|
47
|
+
const longHeads = romajiHeads(long, heads);
|
|
40
48
|
return {
|
|
41
49
|
refIndex,
|
|
42
50
|
raw,
|
|
43
51
|
kana,
|
|
44
52
|
kanaBoundaries: heads,
|
|
45
|
-
kunreiHeads
|
|
46
|
-
hepburnHeads
|
|
53
|
+
kunreiHeads,
|
|
54
|
+
hepburnHeads,
|
|
55
|
+
kanaHeadList: sorted(heads),
|
|
56
|
+
kunreiHeadList: sorted(kunreiHeads),
|
|
57
|
+
hepburnHeadList: sorted(hepburnHeads),
|
|
58
|
+
long,
|
|
59
|
+
longHeads,
|
|
60
|
+
longHeadList: sorted(longHeads),
|
|
61
|
+
longMask: long ? charMask(long.text) : 0,
|
|
47
62
|
kanaMask: charMask(kana.text),
|
|
48
63
|
kunreiMask: kunrei ? charMask(kunrei.text) : 0,
|
|
49
64
|
hepburnMask: hepburn ? charMask(hepburn.text) : 0,
|
package/dist/entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,yDAAyD;AAEzD,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,MAAM,EACN,OAAO,EACP,aAAa,EACb,cAAc,GAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IndexOptions, SearchOptions, SearchResult, SearchIndex } from './types.js';
|
|
2
|
-
export type { IndexOptions, SearchOptions, SearchResult, SearchIndex, RomajiOption, SeparatorConfig, MatchingOption, } from './types.js';
|
|
2
|
+
export type { IndexOptions, SearchOptions, SearchResult, SearchIndex, RomajiOption, SeparatorConfig, MatchKind, MatchingOption, } from './types.js';
|
|
3
3
|
export declare function createIndex(items: readonly string[], options?: IndexOptions<string> & SearchOptions): SearchIndex<string>;
|
|
4
4
|
export declare function createIndex<T>(items: readonly T[], options: IndexOptions<T> & SearchOptions & {
|
|
5
5
|
getText: (item: T) => string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,GAC7C,WAAW,CAAC,MAAM,CAAC,CAAC;AACvB,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;CAAE,GAC1E,WAAW,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,SAAS,EACT,cAAc,GACf,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,GAC7C,WAAW,CAAC,MAAM,CAAC,CAAC;AACvB,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;CAAE,GAC1E,WAAW,CAAC,CAAC,CAAC,CAAC;AAgDlB,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,GAC7C,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1B,wBAAgB,MAAM,CAAC,CAAC,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;CAAE,GAC1E,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// 単発 search は createIndex の薄いラッパ(spec 1章: 両者は完全等価)。
|
|
3
3
|
import { buildEntry } from './entry.js';
|
|
4
4
|
import { runSearch } from './pipeline.js';
|
|
5
|
-
import { computeMatches } from './matches.js';
|
|
5
|
+
import { computeMatches, mergeSpans } from './matches.js';
|
|
6
6
|
const DEFAULT_MAX_TIER = 3;
|
|
7
7
|
const DEFAULT_MIN_SCORE = 0;
|
|
8
8
|
function resolveConfig(romaji, separatorExpansion, matching, opts) {
|
|
@@ -41,9 +41,13 @@ export function createIndex(items, options = {}) {
|
|
|
41
41
|
refIndex: h.refIndex,
|
|
42
42
|
score: h.score,
|
|
43
43
|
tier: h.tier,
|
|
44
|
+
kind: h.match.kind,
|
|
44
45
|
};
|
|
45
46
|
// tier 1/2 のみ matches を付与(tier 3/4 は positions=null → undefined のまま)
|
|
46
|
-
if (config.includeMatches && h.
|
|
47
|
+
if (config.includeMatches && h.parts !== undefined) {
|
|
48
|
+
result.matches = mergeSpans(h.parts.flatMap((p) => computeMatches(entries[h.refIndex], p)));
|
|
49
|
+
}
|
|
50
|
+
else if (config.includeMatches && h.match.positions !== null) {
|
|
47
51
|
result.matches = computeMatches(entries[h.refIndex], h.match);
|
|
48
52
|
}
|
|
49
53
|
return result;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,oDAAoD;AAEpD,OAAO,EAAE,UAAU,EAAmB,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lattice.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export interface Lattice {
|
|
|
14
14
|
readonly outEdges: Int32Array;
|
|
15
15
|
/** 始点から出る辺の文字 */
|
|
16
16
|
readonly firstChars: ReadonlySet<string>;
|
|
17
|
+
/** 同じく文字コード(data.charCodeAt と照らす) */
|
|
18
|
+
readonly firstCodes: ReadonlySet<number>;
|
|
19
|
+
/** 始点→終端の経路(文字列, 打鍵の辺を通るか)。PATH_LIMIT 本を超えるときは null(状態遷移で照合する) */
|
|
20
|
+
readonly paths: readonly (readonly [string, boolean])[] | null;
|
|
17
21
|
}
|
|
18
22
|
/** 正規化済み literal 文字列からラティスを作る。打鍵の辺が無ければ null(文字列照合で足りる) */
|
|
19
23
|
export declare function buildLattice(s: string): Lattice | null;
|
|
@@ -46,6 +50,11 @@ export interface Expanded {
|
|
|
46
50
|
readonly inBit: Int32Array;
|
|
47
51
|
/** 入り辺が打鍵の辺か */
|
|
48
52
|
readonly inKs: Uint8Array;
|
|
53
|
+
/** 状態 x から出る辺 [outStart[x] .. outStart[x+1]) の行き先・文字コード・打鍵の辺か */
|
|
54
|
+
readonly outStart: Int32Array;
|
|
55
|
+
readonly outTo: Int32Array;
|
|
56
|
+
readonly outCh: Int32Array;
|
|
57
|
+
readonly outKs: Uint8Array;
|
|
49
58
|
/** 終端の状態と経路長(経路長昇順) */
|
|
50
59
|
readonly finals: readonly [x: number, m: number][];
|
|
51
60
|
}
|
package/dist/lattice.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lattice.d.ts","sourceRoot":"","sources":["../src/lattice.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,iBAAiB;IACjB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"lattice.d.ts","sourceRoot":"","sources":["../src/lattice.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,iBAAiB;IACjB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;CAChE;AAKD,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAoFtD;AASD,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOpE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAkB7F;AAED,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAQD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAwClG;AAED,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;CACpD;AAID,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CA4DpD"}
|
package/dist/lattice.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
// 節点番号は位相順(辺は常に番号の小さい節点から大きい節点へ)。
|
|
4
4
|
import { keystrokeTable, keystrokeMaxKanaLen } from './keystroke.js';
|
|
5
5
|
import { charMask } from './charmask.js';
|
|
6
|
+
/** 列挙しておく経路の上限 */
|
|
7
|
+
const PATH_LIMIT = 32;
|
|
6
8
|
/** 正規化済み literal 文字列からラティスを作る。打鍵の辺が無ければ null(文字列照合で足りる) */
|
|
7
9
|
export function buildLattice(s) {
|
|
8
10
|
const table = keystrokeTable();
|
|
@@ -81,7 +83,24 @@ export function buildLattice(s) {
|
|
|
81
83
|
const firstChars = new Set();
|
|
82
84
|
for (let k = outStart[0]; k < outStart[1]; k++)
|
|
83
85
|
firstChars.add(ch[outEdges[k]]);
|
|
84
|
-
|
|
86
|
+
const firstCodes = new Set([...firstChars].map((c) => c.charCodeAt(0)));
|
|
87
|
+
// 経路が少なければ列挙しておく(連続一致を文字列の startsWith / indexOf で調べられる)
|
|
88
|
+
let paths = [];
|
|
89
|
+
const walk = (v, s, k) => {
|
|
90
|
+
if (paths === null)
|
|
91
|
+
return;
|
|
92
|
+
if (v === remap[n]) {
|
|
93
|
+
if (paths.length >= PATH_LIMIT)
|
|
94
|
+
paths = null;
|
|
95
|
+
else
|
|
96
|
+
paths.push([s, k]);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
for (let e = outStart[v]; e < outStart[v + 1]; e++)
|
|
100
|
+
walk(to[e], s + ch[e], k || ks[e] === 1);
|
|
101
|
+
};
|
|
102
|
+
walk(0, '', false);
|
|
103
|
+
return { nodeCount: V, final: remap[n], from, to, ch, ks, bit, outStart, outEdges, firstChars, firstCodes, paths };
|
|
85
104
|
}
|
|
86
105
|
let reachBuf = new Uint8Array(0);
|
|
87
106
|
function reachScratch(size) {
|
|
@@ -233,8 +252,25 @@ export function expandByDepth(lat) {
|
|
|
233
252
|
inKs[p++] = k;
|
|
234
253
|
}
|
|
235
254
|
}
|
|
255
|
+
const outStart = new Int32Array(X + 1);
|
|
256
|
+
for (let k = 0; k < total; k++)
|
|
257
|
+
outStart[inFrom[k] + 1]++;
|
|
258
|
+
for (let x = 0; x < X; x++)
|
|
259
|
+
outStart[x + 1] += outStart[x];
|
|
260
|
+
const fill = outStart.slice(0, X);
|
|
261
|
+
const outTo = new Int32Array(total);
|
|
262
|
+
const outCh = new Int32Array(total);
|
|
263
|
+
const outKs = new Uint8Array(total);
|
|
264
|
+
for (let x = 0; x < X; x++) {
|
|
265
|
+
for (let k = inStart[x]; k < inStart[x + 1]; k++) {
|
|
266
|
+
const o = fill[inFrom[k]]++;
|
|
267
|
+
outTo[o] = x;
|
|
268
|
+
outCh[o] = inCh[k];
|
|
269
|
+
outKs[o] = inKs[k];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
236
272
|
const finals = depths[lat.final].map((m) => [xid(lat.final, m), m]);
|
|
237
|
-
const ex = { X, depth, inStart, inFrom, inCh, inBit, inKs, finals };
|
|
273
|
+
const ex = { X, depth, inStart, inFrom, inCh, inBit, inKs, outStart, outTo, outCh, outKs, finals };
|
|
238
274
|
expandedCache.set(lat, ex);
|
|
239
275
|
return ex;
|
|
240
276
|
}
|
package/dist/lattice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lattice.js","sourceRoot":"","sources":["../src/lattice.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lattice.js","sourceRoot":"","sources":["../src/lattice.ts"],"names":[],"mappings":"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"}
|
package/dist/matches.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { IndexEntry } from './entry.js';
|
|
2
2
|
import type { TierMatch } from './tiers/types.js';
|
|
3
|
+
import type { Syllable } from './syllable.js';
|
|
4
|
+
/** romaji 位置 p を含む音節の kana 位置(音節全体)を返す */
|
|
5
|
+
export declare function romajiPosToKana(p: number, syllables: readonly Syllable[]): number[];
|
|
6
|
+
/** spans を昇順ソートし、重複・隣接(半開区間で接する)を連続区間にマージ */
|
|
7
|
+
export declare function mergeSpans(spans: [number, number][]): [number, number][];
|
|
3
8
|
/**
|
|
4
9
|
* 採用位置から元文字列上の一致区間を算出する。
|
|
5
10
|
* match.positions が null(tier 3/4)の場合は [] を返す(呼び出し側で undefined 扱い)。
|
package/dist/matches.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matches.d.ts","sourceRoot":"","sources":["../src/matches.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"matches.d.ts","sourceRoot":"","sources":["../src/matches.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,EAAE,CASnF;AAED,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAaxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAyBtF"}
|
package/dist/matches.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// 2. kana 位置 → 元文字列位置(normMap 経由。n:1 正規化は元区間全体)
|
|
5
5
|
// tier 3/4 は positions=null のため呼ばれない(呼ばれても [] を返す)。
|
|
6
6
|
/** romaji 位置 p を含む音節の kana 位置(音節全体)を返す */
|
|
7
|
-
function romajiPosToKana(p, syllables) {
|
|
7
|
+
export function romajiPosToKana(p, syllables) {
|
|
8
8
|
for (const s of syllables) {
|
|
9
9
|
if (p >= s.romajiStart && p < s.romajiStart + s.romajiLen) {
|
|
10
10
|
const out = [];
|
|
@@ -16,7 +16,7 @@ function romajiPosToKana(p, syllables) {
|
|
|
16
16
|
return [];
|
|
17
17
|
}
|
|
18
18
|
/** spans を昇順ソートし、重複・隣接(半開区間で接する)を連続区間にマージ */
|
|
19
|
-
function mergeSpans(spans) {
|
|
19
|
+
export function mergeSpans(spans) {
|
|
20
20
|
if (spans.length === 0)
|
|
21
21
|
return [];
|
|
22
22
|
spans.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
|
|
@@ -47,7 +47,7 @@ export function computeMatches(entry, match) {
|
|
|
47
47
|
kanaPositions.add(p);
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
|
-
const form = match.space === 'kunrei' ? entry.kunrei : entry.hepburn;
|
|
50
|
+
const form = match.space === 'kunrei' ? entry.kunrei : match.space === 'hepburn' ? entry.hepburn : entry.long;
|
|
51
51
|
if (form) {
|
|
52
52
|
for (const p of match.positions) {
|
|
53
53
|
for (const kp of romajiPosToKana(p, form.syllables))
|
package/dist/matches.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matches.js","sourceRoot":"","sources":["../src/matches.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,4CAA4C;AAC5C,8DAA8D;AAC9D,kDAAkD;AAClD,oDAAoD;AAMpD,0CAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"matches.js","sourceRoot":"","sources":["../src/matches.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export interface SearchHit {
|
|
|
19
19
|
readonly score: number;
|
|
20
20
|
readonly tier: 1 | 2 | 3 | 4;
|
|
21
21
|
readonly match: TierMatch;
|
|
22
|
+
/** 複数の語の一致(spec 2.7)のとき、各語の一致(ハイライトはこれらを合わせる) */
|
|
23
|
+
readonly parts?: readonly TierMatch[];
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* 検索本体。query は生入力、entries は構築済みエントリ。
|
package/dist/pipeline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAY3D,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAuBD,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC;AAgCD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,MAAM,EAAE,YAAY,GACnB,SAAS,EAAE,CAMb"}
|
package/dist/pipeline.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// 公開 API(index.ts)から呼ばれる内部エンジン。
|
|
3
3
|
import { normalizeQuery } from './query.js';
|
|
4
4
|
import { expandQuery } from './expand.js';
|
|
5
|
+
import { KIND_OF_CLASS } from './tiers/tier1-exact.js';
|
|
6
|
+
import { matchTerms } from './terms.js';
|
|
5
7
|
import { tier1Exact } from './tiers/tier1-exact.js';
|
|
6
8
|
import { tier2Flexible } from './tiers/tier2-flexible.js';
|
|
7
9
|
import { tier3Typo } from './tiers/tier3-typo.js';
|
|
@@ -68,6 +70,50 @@ export function runSearch(query, entries, config) {
|
|
|
68
70
|
const trimmed = query.trim();
|
|
69
71
|
if (trimmed === '')
|
|
70
72
|
return []; // 空文字・空白のみ(spec 7章)
|
|
73
|
+
const words = trimmed.split(/\s+/u);
|
|
74
|
+
if (words.length >= 2)
|
|
75
|
+
return runTerms(trimmed, words, entries, config);
|
|
76
|
+
return runSingle(trimmed, entries, config);
|
|
77
|
+
}
|
|
78
|
+
/** 段の番号(tier 1 の kind から) */
|
|
79
|
+
const CLASS_OF_KIND = { prefix: 3, word: 2, initials: 1, inner: 0 };
|
|
80
|
+
/** 複数の語のクエリの tier 1 の点数(spec 2.7): tier 1 の帯の中で (段 + 0.5×順番どおり + 0.5×素点) / 4 */
|
|
81
|
+
function termsScore(cls, ordered, raw) {
|
|
82
|
+
return (3 + (cls + (ordered ? 0.5 : 0) + 0.5 * raw) / 4) / 4;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 複数の語(spec 2.7): 空白込みの全体の一致と、語ごとの一致(すべての語を含む item)の高いほうを採る。
|
|
86
|
+
* 全体の一致は順番どおり扱いで、tier 1 は複数の語と同じ形の点数に直して比べる(完全一致は 1.0 のまま)
|
|
87
|
+
*/
|
|
88
|
+
function runTerms(trimmed, words, entries, config) {
|
|
89
|
+
const modes = modesFor(config.matching);
|
|
90
|
+
const terms = words.map((w) => expandQuery(w, config.separatorExpansion).flatMap((p) => normalizePath(p, config.romaji, modes)));
|
|
91
|
+
const singles = words.map((w) => [...w].length === 1);
|
|
92
|
+
const best = new Map();
|
|
93
|
+
// 全体の一致は上位 limit 件だけで足りる: 点数の直し方は順位を保ち、最終の点数は全体の一致の点数以上なので、
|
|
94
|
+
// 全体の一致で上位 limit 件に入らない item が全体の一致の点数で最終の上位 limit 件に入ることはない
|
|
95
|
+
for (const h of runSingle(trimmed, entries, { ...config, minScore: 0 })) {
|
|
96
|
+
if (h.tier !== 1) {
|
|
97
|
+
best.set(h.refIndex, h);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const cls = CLASS_OF_KIND[h.match.kind];
|
|
101
|
+
best.set(h.refIndex, { ...h, score: termsScore(cls, true, h.match.intraScore * 4 - cls) });
|
|
102
|
+
}
|
|
103
|
+
for (const [idx, t] of matchTerms(terms, singles, entries)) {
|
|
104
|
+
const score = termsScore(t.cls, t.ordered, t.raw);
|
|
105
|
+
const cur = best.get(idx);
|
|
106
|
+
if (cur !== undefined && cur.score >= score)
|
|
107
|
+
continue;
|
|
108
|
+
const match = { tier: 1, kind: KIND_OF_CLASS[t.cls], intraScore: score * 4 - 3, space: 'kana', positions: null };
|
|
109
|
+
best.set(idx, { refIndex: idx, score, tier: 1, match, parts: t.parts });
|
|
110
|
+
}
|
|
111
|
+
const hits = [...best.values()].filter((h) => h.score >= config.minScore);
|
|
112
|
+
hits.sort((a, b) => b.score - a.score || a.refIndex - b.refIndex);
|
|
113
|
+
return config.limit !== undefined ? hits.slice(0, config.limit) : hits;
|
|
114
|
+
}
|
|
115
|
+
/** 1 つの語(空白を含まないクエリ)の検索 */
|
|
116
|
+
function runSingle(trimmed, entries, config) {
|
|
71
117
|
const pathStrings = expandQuery(trimmed, config.separatorExpansion);
|
|
72
118
|
if (pathStrings.length === 0)
|
|
73
119
|
return [];
|
package/dist/pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,gCAAgC;AAEhC,OAAO,EAAE,cAAc,EAAwC,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,WAAW,EAAwB,MAAM,aAAa,CAAC;AAKhE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,gDAAgD;AAChD,8CAA8C;AAC9C,MAAM,YAAY,GAAuB,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAajG,iDAAiD;AACjD,SAAS,QAAQ,CAAC,QAAwB;IACxC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,CAAS,EAAE,MAAoB,EAAE,KAA2B;IACjF,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,CAAE,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/query.d.ts
CHANGED
|
@@ -16,6 +16,12 @@ export interface NormalizedQuery {
|
|
|
16
16
|
readonly kanaMask: number;
|
|
17
17
|
readonly kunreiMask: number;
|
|
18
18
|
readonly hepburnMask: number;
|
|
19
|
+
/**
|
|
20
|
+
* 長音の印つきローマ字(spec 2.2)。phonetic 経路で、母音の重なり(aa)か母音の後の - があるときだけ。
|
|
21
|
+
* 母音の重なりを「母音 + -」にしてからかな・ローマ字にする(saab → sa-b)。データ側 long と照合する
|
|
22
|
+
*/
|
|
23
|
+
readonly long: string | null;
|
|
24
|
+
readonly longMask: number;
|
|
19
25
|
/** 打鍵ラティス(literal 経路でかなを含むとき。それ以外は null で kana を文字列照合) */
|
|
20
26
|
readonly lattice: Lattice | null;
|
|
21
27
|
/**
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAQA,OAAO,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAQA,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAE1D,yBAAyB;AACzB,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/C,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC9B,aAAa;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC7B;AAED,yBAAyB;AACzB,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,SAAsB,GAC3B,eAAe,CAsBjB;AAiBD,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAGlE"}
|
package/dist/query.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// postKana(手順4-5)。literal 経路は toKana を通さず、データ側と同じ正規化になる。
|
|
6
6
|
import { applyTransforms } from './normalize.js';
|
|
7
7
|
import { toKana } from './to-kana.js';
|
|
8
|
-
import { KUNREI, HEPBURN, kunreiEnabled, hepburnEnabled, } from './romaji/convert.js';
|
|
8
|
+
import { KUNREI, HEPBURN, kunreiEnabled, hepburnEnabled, longVowelTable, } from './romaji/convert.js';
|
|
9
9
|
import { kanaToRomaji } from './syllable.js';
|
|
10
10
|
import { generateBigrams } from './bigram.js';
|
|
11
11
|
import { charMask } from './charmask.js';
|
|
@@ -18,6 +18,7 @@ export function normalizeQuery(raw, romaji, mode = 'phonetic') {
|
|
|
18
18
|
const phonetic = mode === 'phonetic';
|
|
19
19
|
const kunrei = phonetic && kunreiEnabled(romaji) ? kanaToRomaji(kana, KUNREI) : null;
|
|
20
20
|
const hepburn = phonetic && hepburnEnabled(romaji) ? kanaToRomaji(kana, HEPBURN) : null;
|
|
21
|
+
const long = phonetic ? longVowelForm(pre, romaji) : null;
|
|
21
22
|
return {
|
|
22
23
|
kana,
|
|
23
24
|
singleChar: isSingleCodePoint(kana),
|
|
@@ -26,11 +27,22 @@ export function normalizeQuery(raw, romaji, mode = 'phonetic') {
|
|
|
26
27
|
kanaMask: charMask(kana),
|
|
27
28
|
kunreiMask: kunrei !== null ? charMask(kunrei) : 0,
|
|
28
29
|
hepburnMask: hepburn !== null ? charMask(hepburn) : 0,
|
|
30
|
+
long,
|
|
31
|
+
longMask: long !== null ? charMask(long) : 0,
|
|
29
32
|
lattice: phonetic ? null : buildLattice(kana),
|
|
30
33
|
shadowed: false,
|
|
31
34
|
bigrams: null,
|
|
32
35
|
};
|
|
33
36
|
}
|
|
37
|
+
const LONG_VOWEL = /([aiueo])\1|[aiueo]-/;
|
|
38
|
+
/** 長音の印つきローマ字(spec 2.2)。印が無ければ null */
|
|
39
|
+
function longVowelForm(pre, romaji) {
|
|
40
|
+
const table = longVowelTable(romaji);
|
|
41
|
+
if (table === null || !LONG_VOWEL.test(pre))
|
|
42
|
+
return null;
|
|
43
|
+
const marked = pre.replace(/([aiueo])\1+/g, '$1-');
|
|
44
|
+
return kanaToRomaji(applyTransforms(toKana(marked), 'postKana'), table);
|
|
45
|
+
}
|
|
34
46
|
function isSingleCodePoint(s) {
|
|
35
47
|
if (s.length === 0)
|
|
36
48
|
return false;
|
package/dist/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,6CAA6C;AAC7C,EAAE;AACF,iEAAiE;AACjE,yDAAyD;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,MAAM,EACN,OAAO,EACP,aAAa,EACb,cAAc,GAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAgB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/romaji/convert.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export type RomajiOption = 'hepburn' | 'kunrei' | 'both' | false;
|
|
|
13
13
|
export declare function kunreiEnabled(option: RomajiOption): boolean;
|
|
14
14
|
/** ヘボン式の生成・照合が有効か */
|
|
15
15
|
export declare function hepburnEnabled(option: RomajiOption): boolean;
|
|
16
|
+
/** 長音の印つきローマ字(spec 2.2)に使う方式: 訓令、無効なら ヘボン、どちらも無効なら null */
|
|
17
|
+
export declare function longVowelTable(option: RomajiOption): RomajiTable | null;
|
|
16
18
|
/**
|
|
17
19
|
* core kana(1文字 or 拗音ダイグラフ 2文字、ー/ッ を含まない)をローマ字へ。
|
|
18
20
|
* テーブルに無い文字(漢字・記号・英数)は小文字化してそのまま返す(パススルー)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/romaji/convert.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,MAAM,EAAE,WAAkE,CAAC;AACxF,eAAO,MAAM,OAAO,EAAE,WAAoE,CAAC;AAE3F;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjE,oBAAoB;AACpB,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE3D;AAED,qBAAqB;AACrB,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAQpE;AAED,6CAA6C;AAC7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D"}
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/romaji/convert.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,MAAM,EAAE,WAAkE,CAAC;AACxF,eAAO,MAAM,OAAO,EAAE,WAAoE,CAAC;AAE3F;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjE,oBAAoB;AACpB,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE3D;AAED,qBAAqB;AACrB,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,CAIvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAQpE;AAED,6CAA6C;AAC7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D"}
|