combine method
An instance of MatchData will be created for every term that matches a document. However only one instance is required in a result. This method combines metadata from another instance of MatchData with this objects metadata.
otherMatchData
- Another instance of match data to merge with this one.
Implementation
combine(MatchData otherMatchData) {
Iterable<String> terms = otherMatchData.metadata.keys;
for (String term in terms) {
Iterable<String> fields = otherMatchData.metadata[term]!.keys;
if (!metadata.containsKey(term)) {
metadata[term] = {};
}
for (String field in fields) {
Iterable<String> keys = otherMatchData.metadata[term]![field]!.keys;
if (!metadata[term]!.containsKey(field)) {
metadata[term]![field] = {};
}
for (String key in keys) {
if (!metadata[term]![field]!.containsKey(key)) {
metadata[term]![field]![key] =
otherMatchData.metadata[term]![field]![key]!;
} else {
metadata[term]![field]![key] = [
...metadata[term]![field]![key]!,
...otherMatchData.metadata[term]![field]![key]!
];
}
}
}
}
}