Skip to content

Commit

Permalink
Add "max_shingle_size" parameter so SearchAsYouType type
Browse files Browse the repository at this point in the history
  • Loading branch information
sebelga committed Jan 17, 2020
1 parent 92b5f78 commit b08e77a
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,5 @@ export * from './fielddata_parameter';
export * from './split_queries_on_whitespace_parameter';

export * from './locale_parameter';

export * from './max_shingle_size_parameter';
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

import React from 'react';

import { i18n } from '@kbn/i18n';

import { getFieldConfig } from '../../../lib';
import { EditFieldFormRow } from '../fields/edit_field';
import { UseField, Field } from '../../../shared_imports';

interface Props {
defaultToggleValue: boolean;
}

export const MaxShingleSizeParameter = ({ defaultToggleValue }: Props) => (
<EditFieldFormRow
title={i18n.translate('xpack.idxMgmt.mappingsEditor.maxShingleSizeFieldTitle', {
defaultMessage: 'Set max shingle size',
})}
description={i18n.translate('xpack.idxMgmt.mappingsEditor.maxShingleSizeFieldDescription', {
defaultMessage:
'The largest shingle size to index the input with and create subfields for, creating one subfield for each shingle size between 2 and the max value.',
})}
defaultToggleValue={defaultToggleValue}
>
<UseField
path="max_shingle_size"
component={Field}
config={getFieldConfig('max_shingle_size')}
componentProps={{
euiFieldProps: {
options: [
{ value: 2, text: '2' },
{ value: 3, text: '3' },
{ value: 4, text: '4' },
],
},
}}
/>
</EditFieldFormRow>
);
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
NormsParameter,
SimilarityParameter,
TermVectorParameter,
MaxShingleSizeParameter,
} from '../../field_parameters';
import { BasicParametersSection, AdvancedParametersSection } from '../edit_field';

Expand All @@ -24,7 +25,8 @@ interface Props {
const getDefaultToggleValue = (param: string, field: FieldType) => {
switch (param) {
case 'similarity':
case 'term_vector': {
case 'term_vector':
case 'max_shingle_size': {
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
}
case 'analyzers': {
Expand All @@ -47,6 +49,10 @@ export const SearchAsYouType = React.memo(({ field }: Props) => {
<AdvancedParametersSection>
<AnalyzersParameter field={field} withSearchQuoteAnalyzer={true} />

<MaxShingleSizeParameter
defaultToggleValue={getDefaultToggleValue('max_shingle_size', field.source)}
/>

<NormsParameter />

<SimilarityParameter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -894,4 +894,14 @@ export const PARAMETERS_DEFINITION = {
},
schema: t.string,
},
max_shingle_size: {
fieldConfig: {
type: FIELD_TYPES.SELECT,
label: i18n.translate('xpack.idxMgmt.mappingsEditor.largestShingleSizeFieldLabel', {
defaultMessage: 'Max shingle size',
}),
defaultValue: 3,
formatters: [toInt],
},
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,8 @@ export type ParameterName =
| 'points_only'
| 'path'
| 'dims'
| 'depth_limit';
| 'depth_limit'
| 'max_shingle_size';

export interface Parameter {
fieldConfig: FieldConfig;
Expand Down

0 comments on commit b08e77a

Please sign in to comment.