@nahisaho/yata-scale 1.8.5
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 +66 -0
- package/dist/CacheManager.d.ts +107 -0
- package/dist/CacheManager.d.ts.map +1 -0
- package/dist/CacheManager.js +343 -0
- package/dist/CacheManager.js.map +1 -0
- package/dist/IndexManager.d.ts +103 -0
- package/dist/IndexManager.d.ts.map +1 -0
- package/dist/IndexManager.js +385 -0
- package/dist/IndexManager.js.map +1 -0
- package/dist/MigrationHelper.d.ts +91 -0
- package/dist/MigrationHelper.d.ts.map +1 -0
- package/dist/MigrationHelper.js +220 -0
- package/dist/MigrationHelper.js.map +1 -0
- package/dist/QueryCoordinator.d.ts +76 -0
- package/dist/QueryCoordinator.d.ts.map +1 -0
- package/dist/QueryCoordinator.js +298 -0
- package/dist/QueryCoordinator.js.map +1 -0
- package/dist/ShardManager.d.ts +48 -0
- package/dist/ShardManager.d.ts.map +1 -0
- package/dist/ShardManager.js +193 -0
- package/dist/ShardManager.js.map +1 -0
- package/dist/SyncController.d.ts +102 -0
- package/dist/SyncController.d.ts.map +1 -0
- package/dist/SyncController.js +286 -0
- package/dist/SyncController.js.map +1 -0
- package/dist/YataScaleManager.d.ts +75 -0
- package/dist/YataScaleManager.d.ts.map +1 -0
- package/dist/YataScaleManager.js +265 -0
- package/dist/YataScaleManager.js.map +1 -0
- package/dist/cache/CacheManager.d.ts +116 -0
- package/dist/cache/CacheManager.d.ts.map +1 -0
- package/dist/cache/CacheManager.js +286 -0
- package/dist/cache/CacheManager.js.map +1 -0
- package/dist/cache/InvalidationManager.d.ts +91 -0
- package/dist/cache/InvalidationManager.d.ts.map +1 -0
- package/dist/cache/InvalidationManager.js +155 -0
- package/dist/cache/InvalidationManager.js.map +1 -0
- package/dist/cache/L1Cache.d.ts +97 -0
- package/dist/cache/L1Cache.d.ts.map +1 -0
- package/dist/cache/L1Cache.js +225 -0
- package/dist/cache/L1Cache.js.map +1 -0
- package/dist/cache/L2Cache.d.ts +93 -0
- package/dist/cache/L2Cache.d.ts.map +1 -0
- package/dist/cache/L2Cache.js +248 -0
- package/dist/cache/L2Cache.js.map +1 -0
- package/dist/cache/L3Cache.d.ts +101 -0
- package/dist/cache/L3Cache.d.ts.map +1 -0
- package/dist/cache/L3Cache.js +229 -0
- package/dist/cache/L3Cache.js.map +1 -0
- package/dist/cache/index.d.ts +12 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +11 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/errors.d.ts +255 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +515 -0
- package/dist/errors.js.map +1 -0
- package/dist/index/BPlusTreeIndex.d.ts +101 -0
- package/dist/index/BPlusTreeIndex.d.ts.map +1 -0
- package/dist/index/BPlusTreeIndex.js +310 -0
- package/dist/index/BPlusTreeIndex.js.map +1 -0
- package/dist/index/BloomFilter.d.ts +85 -0
- package/dist/index/BloomFilter.d.ts.map +1 -0
- package/dist/index/BloomFilter.js +215 -0
- package/dist/index/BloomFilter.js.map +1 -0
- package/dist/index/FullTextIndex.d.ts +87 -0
- package/dist/index/FullTextIndex.d.ts.map +1 -0
- package/dist/index/FullTextIndex.js +213 -0
- package/dist/index/FullTextIndex.js.map +1 -0
- package/dist/index/GraphIndex.d.ts +116 -0
- package/dist/index/GraphIndex.d.ts.map +1 -0
- package/dist/index/GraphIndex.js +308 -0
- package/dist/index/GraphIndex.js.map +1 -0
- package/dist/index/IndexManager.d.ts +105 -0
- package/dist/index/IndexManager.d.ts.map +1 -0
- package/dist/index/IndexManager.js +287 -0
- package/dist/index/IndexManager.js.map +1 -0
- package/dist/index/index.d.ts +12 -0
- package/dist/index/index.d.ts.map +1 -0
- package/dist/index/index.js +11 -0
- package/dist/index/index.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/query/DistributedExecutor.d.ts +78 -0
- package/dist/query/DistributedExecutor.d.ts.map +1 -0
- package/dist/query/DistributedExecutor.js +232 -0
- package/dist/query/DistributedExecutor.js.map +1 -0
- package/dist/query/QueryCoordinator.d.ts +98 -0
- package/dist/query/QueryCoordinator.d.ts.map +1 -0
- package/dist/query/QueryCoordinator.js +246 -0
- package/dist/query/QueryCoordinator.js.map +1 -0
- package/dist/query/QueryPlanner.d.ts +88 -0
- package/dist/query/QueryPlanner.d.ts.map +1 -0
- package/dist/query/QueryPlanner.js +235 -0
- package/dist/query/QueryPlanner.js.map +1 -0
- package/dist/query/WorkerPool.d.ts +108 -0
- package/dist/query/WorkerPool.d.ts.map +1 -0
- package/dist/query/WorkerPool.js +195 -0
- package/dist/query/WorkerPool.js.map +1 -0
- package/dist/query/index.d.ts +11 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +10 -0
- package/dist/query/index.js.map +1 -0
- package/dist/shard/GraphPartitionStrategy.d.ts +65 -0
- package/dist/shard/GraphPartitionStrategy.d.ts.map +1 -0
- package/dist/shard/GraphPartitionStrategy.js +208 -0
- package/dist/shard/GraphPartitionStrategy.js.map +1 -0
- package/dist/shard/HashPartitionStrategy.d.ts +56 -0
- package/dist/shard/HashPartitionStrategy.d.ts.map +1 -0
- package/dist/shard/HashPartitionStrategy.js +169 -0
- package/dist/shard/HashPartitionStrategy.js.map +1 -0
- package/dist/shard/RangePartitionStrategy.d.ts +63 -0
- package/dist/shard/RangePartitionStrategy.d.ts.map +1 -0
- package/dist/shard/RangePartitionStrategy.js +157 -0
- package/dist/shard/RangePartitionStrategy.js.map +1 -0
- package/dist/shard/Rebalancer.d.ts +70 -0
- package/dist/shard/Rebalancer.d.ts.map +1 -0
- package/dist/shard/Rebalancer.js +184 -0
- package/dist/shard/Rebalancer.js.map +1 -0
- package/dist/shard/ShardManager.d.ts +123 -0
- package/dist/shard/ShardManager.d.ts.map +1 -0
- package/dist/shard/ShardManager.js +353 -0
- package/dist/shard/ShardManager.js.map +1 -0
- package/dist/shard/ShardRouter.d.ts +102 -0
- package/dist/shard/ShardRouter.d.ts.map +1 -0
- package/dist/shard/ShardRouter.js +181 -0
- package/dist/shard/ShardRouter.js.map +1 -0
- package/dist/shard/index.d.ts +13 -0
- package/dist/shard/index.d.ts.map +1 -0
- package/dist/shard/index.js +12 -0
- package/dist/shard/index.js.map +1 -0
- package/dist/sync/ConflictResolver.d.ts +71 -0
- package/dist/sync/ConflictResolver.d.ts.map +1 -0
- package/dist/sync/ConflictResolver.js +214 -0
- package/dist/sync/ConflictResolver.js.map +1 -0
- package/dist/sync/SyncController.d.ts +150 -0
- package/dist/sync/SyncController.d.ts.map +1 -0
- package/dist/sync/SyncController.js +304 -0
- package/dist/sync/SyncController.js.map +1 -0
- package/dist/sync/VectorClock.d.ts +102 -0
- package/dist/sync/VectorClock.d.ts.map +1 -0
- package/dist/sync/VectorClock.js +189 -0
- package/dist/sync/VectorClock.js.map +1 -0
- package/dist/sync/WALManager.d.ts +120 -0
- package/dist/sync/WALManager.d.ts.map +1 -0
- package/dist/sync/WALManager.js +240 -0
- package/dist/sync/WALManager.js.map +1 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +10 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/types.d.ts +323 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - Full-Text Index
|
|
3
|
+
*
|
|
4
|
+
* Full-text search index with tokenization and ranking
|
|
5
|
+
*/
|
|
6
|
+
import type { IndexStats } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Document to index
|
|
9
|
+
*/
|
|
10
|
+
export interface IndexDocument {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly content: string;
|
|
13
|
+
readonly boost?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Search result
|
|
17
|
+
*/
|
|
18
|
+
export interface SearchResult {
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly score: number;
|
|
21
|
+
readonly highlights?: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Full-text search index with BM25 ranking
|
|
25
|
+
*/
|
|
26
|
+
export declare class FullTextIndex {
|
|
27
|
+
private invertedIndex;
|
|
28
|
+
private documentLengths;
|
|
29
|
+
private documentCount;
|
|
30
|
+
private totalLength;
|
|
31
|
+
private readonly k1;
|
|
32
|
+
private readonly b;
|
|
33
|
+
constructor();
|
|
34
|
+
/**
|
|
35
|
+
* Index a document
|
|
36
|
+
*/
|
|
37
|
+
index(doc: IndexDocument): void;
|
|
38
|
+
/**
|
|
39
|
+
* Remove a document from index
|
|
40
|
+
*/
|
|
41
|
+
removeDocument(id: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Search for documents
|
|
44
|
+
*/
|
|
45
|
+
search(query: string, limit?: number): SearchResult[];
|
|
46
|
+
/**
|
|
47
|
+
* Fuzzy search using Levenshtein distance
|
|
48
|
+
*/
|
|
49
|
+
fuzzySearch(query: string, maxDistance?: number, limit?: number): SearchResult[];
|
|
50
|
+
/**
|
|
51
|
+
* Tokenize text
|
|
52
|
+
*/
|
|
53
|
+
private tokenize;
|
|
54
|
+
/**
|
|
55
|
+
* Simple stemmer (Porter-like for English)
|
|
56
|
+
*/
|
|
57
|
+
private stem;
|
|
58
|
+
/**
|
|
59
|
+
* Calculate term frequencies
|
|
60
|
+
*/
|
|
61
|
+
private calculateTermFrequencies;
|
|
62
|
+
/**
|
|
63
|
+
* Levenshtein distance for fuzzy matching
|
|
64
|
+
*/
|
|
65
|
+
private levenshteinDistance;
|
|
66
|
+
/**
|
|
67
|
+
* Clear the index
|
|
68
|
+
*/
|
|
69
|
+
clear(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Get document count
|
|
72
|
+
*/
|
|
73
|
+
get size(): number;
|
|
74
|
+
/**
|
|
75
|
+
* Get term count
|
|
76
|
+
*/
|
|
77
|
+
get termCount(): number;
|
|
78
|
+
/**
|
|
79
|
+
* Get index statistics
|
|
80
|
+
*/
|
|
81
|
+
getStats(): IndexStats;
|
|
82
|
+
/**
|
|
83
|
+
* Estimate memory size
|
|
84
|
+
*/
|
|
85
|
+
private estimateSize;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=FullTextIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FullTextIndex.d.ts","sourceRoot":"","sources":["../../src/index/FullTextIndex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAgB;;IAIlC;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAwB/B;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAmBnC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAoCzD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAsBvF;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,IAAI;IAaZ;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,QAAQ,IAAI,UAAU;IAWtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAarB"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - Full-Text Index
|
|
3
|
+
*
|
|
4
|
+
* Full-text search index with tokenization and ranking
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Full-text search index with BM25 ranking
|
|
8
|
+
*/
|
|
9
|
+
export class FullTextIndex {
|
|
10
|
+
invertedIndex = new Map();
|
|
11
|
+
documentLengths = new Map();
|
|
12
|
+
documentCount = 0;
|
|
13
|
+
totalLength = 0;
|
|
14
|
+
k1 = 1.2;
|
|
15
|
+
b = 0.75;
|
|
16
|
+
constructor() { }
|
|
17
|
+
/**
|
|
18
|
+
* Index a document
|
|
19
|
+
*/
|
|
20
|
+
index(doc) {
|
|
21
|
+
const tokens = this.tokenize(doc.content);
|
|
22
|
+
const termFreqs = this.calculateTermFrequencies(tokens);
|
|
23
|
+
// Remove old document data if exists
|
|
24
|
+
if (this.documentLengths.has(doc.id)) {
|
|
25
|
+
this.removeDocument(doc.id);
|
|
26
|
+
}
|
|
27
|
+
// Add to inverted index
|
|
28
|
+
for (const [term, freq] of termFreqs) {
|
|
29
|
+
if (!this.invertedIndex.has(term)) {
|
|
30
|
+
this.invertedIndex.set(term, new Map());
|
|
31
|
+
}
|
|
32
|
+
const postings = this.invertedIndex.get(term);
|
|
33
|
+
postings.set(doc.id, freq * (doc.boost ?? 1));
|
|
34
|
+
}
|
|
35
|
+
// Track document length
|
|
36
|
+
this.documentLengths.set(doc.id, tokens.length);
|
|
37
|
+
this.totalLength += tokens.length;
|
|
38
|
+
this.documentCount++;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Remove a document from index
|
|
42
|
+
*/
|
|
43
|
+
removeDocument(id) {
|
|
44
|
+
const length = this.documentLengths.get(id);
|
|
45
|
+
if (length === undefined) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
// Remove from all posting lists
|
|
49
|
+
for (const postings of this.invertedIndex.values()) {
|
|
50
|
+
postings.delete(id);
|
|
51
|
+
}
|
|
52
|
+
// Update stats
|
|
53
|
+
this.totalLength -= length;
|
|
54
|
+
this.documentLengths.delete(id);
|
|
55
|
+
this.documentCount--;
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Search for documents
|
|
60
|
+
*/
|
|
61
|
+
search(query, limit = 10) {
|
|
62
|
+
const queryTokens = this.tokenize(query);
|
|
63
|
+
const scores = new Map();
|
|
64
|
+
const avgDocLength = this.totalLength / Math.max(this.documentCount, 1);
|
|
65
|
+
for (const term of queryTokens) {
|
|
66
|
+
const postings = this.invertedIndex.get(term);
|
|
67
|
+
if (!postings)
|
|
68
|
+
continue;
|
|
69
|
+
// Calculate IDF
|
|
70
|
+
const idf = Math.log((this.documentCount - postings.size + 0.5) / (postings.size + 0.5) + 1);
|
|
71
|
+
// Calculate BM25 score for each document
|
|
72
|
+
for (const [docId, termFreq] of postings) {
|
|
73
|
+
const docLength = this.documentLengths.get(docId) ?? 0;
|
|
74
|
+
const numerator = termFreq * (this.k1 + 1);
|
|
75
|
+
const denominator = termFreq + this.k1 * (1 - this.b + (this.b * docLength) / avgDocLength);
|
|
76
|
+
const score = idf * (numerator / denominator);
|
|
77
|
+
scores.set(docId, (scores.get(docId) ?? 0) + score);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Sort by score and return top results
|
|
81
|
+
const results = [...scores.entries()]
|
|
82
|
+
.sort((a, b) => b[1] - a[1])
|
|
83
|
+
.slice(0, limit)
|
|
84
|
+
.map(([id, score]) => ({ id, score }));
|
|
85
|
+
return results;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Fuzzy search using Levenshtein distance
|
|
89
|
+
*/
|
|
90
|
+
fuzzySearch(query, maxDistance = 2, limit = 10) {
|
|
91
|
+
const queryTokens = this.tokenize(query);
|
|
92
|
+
const matchedTerms = new Set();
|
|
93
|
+
// Find similar terms
|
|
94
|
+
for (const queryToken of queryTokens) {
|
|
95
|
+
for (const indexTerm of this.invertedIndex.keys()) {
|
|
96
|
+
if (this.levenshteinDistance(queryToken, indexTerm) <= maxDistance) {
|
|
97
|
+
matchedTerms.add(indexTerm);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Search with matched terms
|
|
102
|
+
if (matchedTerms.size === 0) {
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
const expandedQuery = [...matchedTerms].join(' ');
|
|
106
|
+
return this.search(expandedQuery, limit);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Tokenize text
|
|
110
|
+
*/
|
|
111
|
+
tokenize(text) {
|
|
112
|
+
return text
|
|
113
|
+
.toLowerCase()
|
|
114
|
+
.replace(/[^\p{L}\p{N}\s]/gu, ' ')
|
|
115
|
+
.split(/\s+/)
|
|
116
|
+
.filter((token) => token.length > 1)
|
|
117
|
+
.map((token) => this.stem(token));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Simple stemmer (Porter-like for English)
|
|
121
|
+
*/
|
|
122
|
+
stem(word) {
|
|
123
|
+
// Very basic stemming - just remove common suffixes
|
|
124
|
+
const suffixes = ['ing', 'ed', 'es', 's', 'tion', 'ness', 'ment', 'ly'];
|
|
125
|
+
for (const suffix of suffixes) {
|
|
126
|
+
if (word.endsWith(suffix) && word.length > suffix.length + 2) {
|
|
127
|
+
return word.slice(0, -suffix.length);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return word;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Calculate term frequencies
|
|
134
|
+
*/
|
|
135
|
+
calculateTermFrequencies(tokens) {
|
|
136
|
+
const freqs = new Map();
|
|
137
|
+
for (const token of tokens) {
|
|
138
|
+
freqs.set(token, (freqs.get(token) ?? 0) + 1);
|
|
139
|
+
}
|
|
140
|
+
return freqs;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Levenshtein distance for fuzzy matching
|
|
144
|
+
*/
|
|
145
|
+
levenshteinDistance(a, b) {
|
|
146
|
+
if (a.length === 0)
|
|
147
|
+
return b.length;
|
|
148
|
+
if (b.length === 0)
|
|
149
|
+
return a.length;
|
|
150
|
+
const matrix = [];
|
|
151
|
+
for (let i = 0; i <= b.length; i++) {
|
|
152
|
+
matrix[i] = [i];
|
|
153
|
+
}
|
|
154
|
+
for (let j = 0; j <= a.length; j++) {
|
|
155
|
+
matrix[0][j] = j;
|
|
156
|
+
}
|
|
157
|
+
for (let i = 1; i <= b.length; i++) {
|
|
158
|
+
for (let j = 1; j <= a.length; j++) {
|
|
159
|
+
const cost = a[j - 1] === b[i - 1] ? 0 : 1;
|
|
160
|
+
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return matrix[b.length][a.length];
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Clear the index
|
|
167
|
+
*/
|
|
168
|
+
clear() {
|
|
169
|
+
this.invertedIndex.clear();
|
|
170
|
+
this.documentLengths.clear();
|
|
171
|
+
this.documentCount = 0;
|
|
172
|
+
this.totalLength = 0;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get document count
|
|
176
|
+
*/
|
|
177
|
+
get size() {
|
|
178
|
+
return this.documentCount;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get term count
|
|
182
|
+
*/
|
|
183
|
+
get termCount() {
|
|
184
|
+
return this.invertedIndex.size;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get index statistics
|
|
188
|
+
*/
|
|
189
|
+
getStats() {
|
|
190
|
+
return {
|
|
191
|
+
name: 'fulltext',
|
|
192
|
+
type: 'fulltext',
|
|
193
|
+
entryCount: this.documentCount,
|
|
194
|
+
sizeBytes: this.estimateSize(),
|
|
195
|
+
hitRate: 0,
|
|
196
|
+
lastUpdated: new Date(),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Estimate memory size
|
|
201
|
+
*/
|
|
202
|
+
estimateSize() {
|
|
203
|
+
// Rough estimate
|
|
204
|
+
let size = 0;
|
|
205
|
+
for (const [term, postings] of this.invertedIndex) {
|
|
206
|
+
size += term.length * 2; // Term storage
|
|
207
|
+
size += postings.size * 20; // Posting list
|
|
208
|
+
}
|
|
209
|
+
size += this.documentCount * 50; // Document metadata
|
|
210
|
+
return size;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=FullTextIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FullTextIndex.js","sourceRoot":"","sources":["../../src/index/FullTextIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - Graph Index
|
|
3
|
+
*
|
|
4
|
+
* Graph-specific indexes for efficient traversal
|
|
5
|
+
*/
|
|
6
|
+
import type { IndexStats, RelationshipType, Relationship } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Edge in the graph
|
|
9
|
+
*/
|
|
10
|
+
export interface Edge {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly sourceId: string;
|
|
13
|
+
readonly targetId: string;
|
|
14
|
+
readonly type: RelationshipType;
|
|
15
|
+
readonly weight?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Path in the graph
|
|
19
|
+
*/
|
|
20
|
+
export interface GraphPath {
|
|
21
|
+
readonly nodes: string[];
|
|
22
|
+
readonly edges: string[];
|
|
23
|
+
readonly length: number;
|
|
24
|
+
readonly weight: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Graph index for efficient traversal operations
|
|
28
|
+
*/
|
|
29
|
+
export declare class GraphIndex {
|
|
30
|
+
private outgoing;
|
|
31
|
+
private incoming;
|
|
32
|
+
private byType;
|
|
33
|
+
private edges;
|
|
34
|
+
constructor();
|
|
35
|
+
/**
|
|
36
|
+
* Add an edge to the index
|
|
37
|
+
*/
|
|
38
|
+
addEdge(edge: Edge): void;
|
|
39
|
+
/**
|
|
40
|
+
* Add edge from relationship
|
|
41
|
+
*/
|
|
42
|
+
addRelationship(rel: Relationship): void;
|
|
43
|
+
/**
|
|
44
|
+
* Remove an edge
|
|
45
|
+
*/
|
|
46
|
+
removeEdge(edgeId: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get outgoing edges from a node
|
|
49
|
+
*/
|
|
50
|
+
getOutgoingEdges(nodeId: string): Edge[];
|
|
51
|
+
/**
|
|
52
|
+
* Get incoming edges to a node
|
|
53
|
+
*/
|
|
54
|
+
getIncomingEdges(nodeId: string): Edge[];
|
|
55
|
+
/**
|
|
56
|
+
* Get all edges for a node (both directions)
|
|
57
|
+
*/
|
|
58
|
+
getAllEdges(nodeId: string): Edge[];
|
|
59
|
+
/**
|
|
60
|
+
* Get outgoing neighbors
|
|
61
|
+
*/
|
|
62
|
+
getOutgoingNeighbors(nodeId: string): string[];
|
|
63
|
+
/**
|
|
64
|
+
* Get incoming neighbors
|
|
65
|
+
*/
|
|
66
|
+
getIncomingNeighbors(nodeId: string): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Get neighbors within k hops
|
|
69
|
+
*/
|
|
70
|
+
getNeighbors(nodeId: string, depth: number, direction?: 'outgoing' | 'incoming' | 'both'): Set<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Find shortest path using BFS
|
|
73
|
+
*/
|
|
74
|
+
findShortestPath(source: string, target: string, maxDepth?: number): GraphPath | null;
|
|
75
|
+
/**
|
|
76
|
+
* Find all paths (up to maxPaths)
|
|
77
|
+
*/
|
|
78
|
+
findAllPaths(source: string, target: string, maxDepth?: number, maxPaths?: number): Generator<GraphPath>;
|
|
79
|
+
/**
|
|
80
|
+
* Get edges by type
|
|
81
|
+
*/
|
|
82
|
+
getEdgesByType(type: RelationshipType): Edge[];
|
|
83
|
+
/**
|
|
84
|
+
* Check if edge exists between two nodes
|
|
85
|
+
*/
|
|
86
|
+
hasEdge(sourceId: string, targetId: string): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Get edge between two nodes
|
|
89
|
+
*/
|
|
90
|
+
getEdge(sourceId: string, targetId: string): Edge | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Get node degree
|
|
93
|
+
*/
|
|
94
|
+
getDegree(nodeId: string, direction?: 'in' | 'out' | 'total'): number;
|
|
95
|
+
/**
|
|
96
|
+
* Clear the index
|
|
97
|
+
*/
|
|
98
|
+
clear(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Get edge count
|
|
101
|
+
*/
|
|
102
|
+
get size(): number;
|
|
103
|
+
/**
|
|
104
|
+
* Get node count
|
|
105
|
+
*/
|
|
106
|
+
get nodeCount(): number;
|
|
107
|
+
/**
|
|
108
|
+
* Get index statistics
|
|
109
|
+
*/
|
|
110
|
+
getStats(): IndexStats;
|
|
111
|
+
/**
|
|
112
|
+
* Estimate memory size
|
|
113
|
+
*/
|
|
114
|
+
private estimateSize;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=GraphIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphIndex.d.ts","sourceRoot":"","sources":["../../src/index/GraphIndex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,UAAU;IAErB,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,QAAQ,CAA6C;IAG7D,OAAO,CAAC,MAAM,CAAiD;IAG/D,OAAO,CAAC,KAAK,CAAgC;;IAI7C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAuBzB;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAUxC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmBnC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE;IAKxC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE;IAKxC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE;IAInC;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAK9C;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAK9C;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,UAAU,GAAG,UAAU,GAAG,MAAe,GAAG,GAAG,CAAC,MAAM,CAAC;IAmC9G;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,SAAS,GAAG,IAAI;IAgDzF;;OAEG;IACF,YAAY,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAW,EACrB,QAAQ,GAAE,MAAY,GACrB,SAAS,CAAC,SAAS,CAAC;IA4CvB;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE;IAgB9C;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAI7D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,IAAI,GAAG,KAAK,GAAG,OAAiB,GAAG,MAAM;IAc9E;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAOtB;IAED;;OAEG;IACH,QAAQ,IAAI,UAAU;IAWtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAQrB"}
|