tokenizeJson method Null safety

  1. @override
Future<List<Token>> tokenizeJson(
  1. Map<String, dynamic> document,
  2. [Iterable<Zone>? zones]
)
override

Extracts tokens from the zones in a JSON document for use in full-text search queries and indexes.

The required parameter zones is the collection of the names of the zones in document that are to be tokenized.

Returns a List<Token>.

Implementation

@override
Future<List<Token>> tokenizeJson(Map<String, dynamic> document,
    [Iterable<Zone>? zones]) async {
  final tokens = <Token>[];
  if (zones == null || zones.isEmpty) {
    final valueBuilder = StringBuffer();
    for (final fieldValue in document.values) {
      valueBuilder.writeln(fieldValue.toString());
    }
    final value = valueBuilder.toString();
    final source = value.toString();
    if (source.isNotEmpty) {
      tokens.addAll(await tokenize(source));
    }
  } else {
    zones = zones.toSet();

    for (final zone in zones) {
      final value = document[zone];
      if (value != null) {
        final source = value.toString();
        if (source.isNotEmpty) {
          tokens.addAll(await tokenize(source, zone));
        }
      }
    }
  }
  return tokens;
}