|
@@ -66,14 +66,26 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
'warning'
|
|
|
);
|
|
|
}
|
|
|
+
|
|
|
+ const commonParams: searchKeywordsType[] = [
|
|
|
+ 'radius',
|
|
|
+ 'range_filter',
|
|
|
+ 'round_decimal',
|
|
|
+ ];
|
|
|
return indexType !== '' && isSupportedType
|
|
|
- ? [...INDEX_CONFIG[indexType].search, 'round_decimal']
|
|
|
- : ['round_decimal'];
|
|
|
+ ? [...INDEX_CONFIG[indexType].search, ...commonParams]
|
|
|
+ : commonParams;
|
|
|
}, [indexType, openSnackBar, warningTrans]);
|
|
|
|
|
|
const handleInputChange = useCallback(
|
|
|
- (key: string, value: number) => {
|
|
|
- const form = { ...searchParamsForm, [key]: value };
|
|
|
+ (key: string, value: number | string) => {
|
|
|
+ let form = { ...searchParamsForm };
|
|
|
+ if (value === '') {
|
|
|
+ delete form[key];
|
|
|
+ } else {
|
|
|
+ form = { ...searchParamsForm, [key]: Number(value) };
|
|
|
+ }
|
|
|
+
|
|
|
handleFormChange(form);
|
|
|
},
|
|
|
[handleFormChange, searchParamsForm]
|
|
@@ -92,6 +104,7 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
value,
|
|
|
handleChange,
|
|
|
isInt = true,
|
|
|
+ required = true,
|
|
|
} = params;
|
|
|
|
|
|
// search_k range is special compared to others,need to be handled separately
|
|
@@ -108,22 +121,13 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
variant: 'filled',
|
|
|
type: 'number',
|
|
|
value,
|
|
|
- validations: [
|
|
|
- {
|
|
|
- rule: 'require',
|
|
|
- errorText: warningTrans('required', { name: label }),
|
|
|
- },
|
|
|
- ],
|
|
|
+ validations: [],
|
|
|
};
|
|
|
- if (!isSearchK && min && max) {
|
|
|
+
|
|
|
+ if (required) {
|
|
|
config.validations?.push({
|
|
|
- rule: 'range',
|
|
|
- errorText: warningTrans('range', { min, max }),
|
|
|
- extraParam: {
|
|
|
- min,
|
|
|
- max,
|
|
|
- type: 'number',
|
|
|
- },
|
|
|
+ rule: 'require',
|
|
|
+ errorText: warningTrans('required', { name: label }),
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -168,14 +172,15 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
[key in searchKeywordsType]: SearchParamInputConfig;
|
|
|
} = {
|
|
|
round_decimal: {
|
|
|
- label: 'Round Decimals',
|
|
|
+ label: 'round',
|
|
|
key: 'round_decimal',
|
|
|
value: searchParamsForm['round_decimal'] || '',
|
|
|
min: -1,
|
|
|
max: 10,
|
|
|
isInt: true,
|
|
|
+ required: false,
|
|
|
handleChange: value => {
|
|
|
- handleInputChange('round_decimal', Number(value));
|
|
|
+ handleInputChange('round_decimal', value);
|
|
|
},
|
|
|
className: classes.inlineInput,
|
|
|
},
|
|
@@ -187,7 +192,33 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
max: nlist,
|
|
|
isInt: true,
|
|
|
handleChange: value => {
|
|
|
- handleInputChange('nprobe', Number(value));
|
|
|
+ handleInputChange('nprobe', value);
|
|
|
+ },
|
|
|
+ className: classes.inlineInput,
|
|
|
+ },
|
|
|
+ radius: {
|
|
|
+ label: 'radius',
|
|
|
+ key: 'radius',
|
|
|
+ value: searchParamsForm['radius'] || '',
|
|
|
+ min: 1,
|
|
|
+ max: 1024,
|
|
|
+ isInt: false,
|
|
|
+ required: false,
|
|
|
+ handleChange: value => {
|
|
|
+ handleInputChange('radius', value);
|
|
|
+ },
|
|
|
+ className: classes.inlineInput,
|
|
|
+ },
|
|
|
+ range_filter: {
|
|
|
+ label: 'range filter',
|
|
|
+ key: 'range_filter',
|
|
|
+ value: searchParamsForm['range_filter'] || '',
|
|
|
+ min: 1,
|
|
|
+ max: 1024,
|
|
|
+ isInt: false,
|
|
|
+ required: false,
|
|
|
+ handleChange: value => {
|
|
|
+ handleInputChange('range_filter', value);
|
|
|
},
|
|
|
className: classes.inlineInput,
|
|
|
},
|
|
@@ -199,7 +230,7 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
max: 32768,
|
|
|
isInt: true,
|
|
|
handleChange: value => {
|
|
|
- handleInputChange('ef', Number(value));
|
|
|
+ handleInputChange('ef', value);
|
|
|
},
|
|
|
},
|
|
|
level: {
|
|
@@ -210,7 +241,7 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
max: 3,
|
|
|
isInt: true,
|
|
|
handleChange: value => {
|
|
|
- handleInputChange('level', Number(value));
|
|
|
+ handleInputChange('level', value);
|
|
|
},
|
|
|
},
|
|
|
search_k: {
|
|
@@ -222,7 +253,7 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
max: Infinity,
|
|
|
isInt: true,
|
|
|
handleChange: value => {
|
|
|
- handleInputChange('search_k', Number(value));
|
|
|
+ handleInputChange('search_k', value);
|
|
|
},
|
|
|
},
|
|
|
search_length: {
|
|
@@ -233,7 +264,7 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
max: 300,
|
|
|
isInt: true,
|
|
|
handleChange: value => {
|
|
|
- handleInputChange('search_length', Number(value));
|
|
|
+ handleInputChange('search_length', value);
|
|
|
},
|
|
|
},
|
|
|
search_list: {
|
|
@@ -244,7 +275,7 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
max: 65535,
|
|
|
isInt: true,
|
|
|
handleChange: value => {
|
|
|
- handleInputChange('search_list', Number(value));
|
|
|
+ handleInputChange('search_list', value);
|
|
|
},
|
|
|
},
|
|
|
};
|
|
@@ -294,6 +325,7 @@ const SearchParams: FC<SearchParamsProps> = ({
|
|
|
label={indexTrans('metric')}
|
|
|
wrapperClass={classes.selector}
|
|
|
variant="filled"
|
|
|
+ disabled={true}
|
|
|
onChange={(e: { target: { value: unknown } }) => {
|
|
|
const metricType = e.target.value as string;
|
|
|
handleMetricTypeChange(metricType);
|