prepareDataSetSearch function
FdcPreparedDataSetSearch?
prepareDataSetSearch({
- required FdcDataSetSearchState search,
- required List<
FdcFieldDef> fields, - required Map<
String, int> fieldIndexByName, - required FdcFormatSettings formatSettings,
Prepares normalized search state for efficient local dataset evaluation.
Implementation
FdcPreparedDataSetSearch? prepareDataSetSearch({
required FdcDataSetSearchState search,
required List<FdcFieldDef> fields,
required Map<String, int> fieldIndexByName,
required FdcFormatSettings formatSettings,
}) {
final normalized = search.normalized();
if (!normalized.isActive) {
return null;
}
final resolvedFields = _resolveSearchFieldIndexes(
search: normalized,
fields: fields,
fieldIndexByName: fieldIndexByName,
formatSettings: formatSettings,
);
final phrase = _normalizeSearchPhrase(
normalized.text,
caseSensitive: normalized.caseSensitive,
);
final shouldDeduplicateTokens = _searchModeUsesWordTokens(normalized.mode);
final tokens = _orderSearchTokensForMatching(
_normalizeSearchTokens(
normalized.text,
caseSensitive: normalized.caseSensitive,
deduplicate: shouldDeduplicateTokens,
),
);
final rawTokens = _orderSearchTokensForMatching(
_normalizeSearchTokens(
normalized.text,
caseSensitive: true,
deduplicate: shouldDeduplicateTokens,
),
);
final integerFastTokenValues = _integerFastTerms(
rawTokens,
formatSettings: formatSettings,
);
final integerFastPhrase = _integerFastPhraseForSearch(
phrase: normalized.text,
formatSettings: formatSettings,
);
final decimalFastTokenValues = _decimalFastTerms(
rawTokens,
formatSettings: formatSettings,
);
final timeFastTokenTerms = _timeFastTerms(
rawTokens,
formatSettings: formatSettings,
);
final timeFastPhrase = _timeFastPhraseForSearch(
phrase: normalized.text,
formatSettings: formatSettings,
);
final dateFastTokenTerms = _dateFastTerms(
rawTokens,
formatSettings: formatSettings,
);
final dateFastPhrase = _dateFastPhraseForSearch(
phrase: normalized.text,
formatSettings: formatSettings,
);
return FdcPreparedDataSetSearch._(
mode: normalized.mode,
caseSensitive: normalized.caseSensitive,
formatSettings: formatSettings,
phrase: phrase,
tokens: tokens,
fieldIndexes: resolvedFields.fieldIndexes,
fieldDataTypes: Map<int, FdcDataType>.unmodifiable(<int, FdcDataType>{
for (var index = 0; index < fields.length; index++)
index: fields[index].dataType,
}),
fieldTextFormatters: Map<int, FdcSearchFieldTextFormatter>.unmodifiable(
<int, FdcSearchFieldTextFormatter>{
for (var index = 0; index < fields.length; index++)
if (normalized.fieldTextFormatters?[FdcFieldName.normalize(
fields[index].name,
)] !=
null)
index:
normalized.fieldTextFormatters![FdcFieldName.normalize(
fields[index].name,
)]!,
},
),
fieldFormatSettings:
Map<int, FdcFormatSettings>.unmodifiable(<int, FdcFormatSettings>{
for (var index = 0; index < fields.length; index++)
if (normalized.fieldFormatSettings?[FdcFieldName.normalize(
fields[index].name,
)] !=
null)
index:
normalized.fieldFormatSettings![FdcFieldName.normalize(
fields[index].name,
)]!,
}),
integerFastTokenValues: integerFastTokenValues,
integerFastPhraseValue: _integerFastSearchTermForText(integerFastPhrase),
decimalFastTokenValues: decimalFastTokenValues,
decimalFastPhraseValue: _decimalFastSearchTermForText(
_decimalFastPhraseForSearch(
phrase: normalized.text,
formatSettings: formatSettings,
),
),
structuredTimeOnly: _structuredTimeOnlyForSearch(
timeFastPhrase: timeFastPhrase,
fieldIndexes: resolvedFields.fieldIndexes,
fields: fields,
),
timeFastTokenTerms: timeFastTokenTerms,
timeFastPhraseTerm: _timeFastSearchTermForText(
timeFastPhrase,
formatSettings: formatSettings,
),
dateFastTokenTerms: dateFastTokenTerms,
dateFastPhraseTerm: _dateFastSearchTermForText(
dateFastPhrase,
formatSettings: formatSettings,
),
);
}