-
Notifications
You must be signed in to change notification settings - Fork 13
/
ngram-tokens.ts
43 lines (40 loc) · 1.25 KB
/
ngram-tokens.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { xLuceneFieldType, ESFieldType, xLuceneTypeConfig } from '@terascope/types';
import BaseType from '../base-type';
import { GraphQLType, TypeESMapping } from '../../interfaces';
export default class NgramTokens extends BaseType {
toESMapping(): TypeESMapping {
this._validateESMapping();
return {
mapping: {
[this.field]: {
type: 'keyword' as ESFieldType,
fields: {
tokens: {
type: 'text' as ESFieldType,
analyzer: 'ngram_analyzer',
},
},
},
},
analyzer: {
ngram_analyzer: {
tokenizer: 'ngram_tokenizer',
},
},
tokenizer: {
ngram_tokenizer: {
type: 'ngram',
min_gram: 3,
max_gram: 3,
token_chars: ['digit'],
},
},
};
}
toGraphQL(): GraphQLType {
return this._formatGql('String');
}
toXlucene(): xLuceneTypeConfig {
return { [this.field]: xLuceneFieldType.String };
}
}