thanks for that, looks way better than my solutions! Just to be sure, you mean index the dictionary like that:
_ = doc.dictionary.Select(p => CreateField(p.key, p.key + "=" + p.value, false, true))
This
solves cases 1 (exists query) and 3 (equals query) perfectly. Am I
right that for case 2 (query only using "value") I would still require a
separate index field?
EDIT:
Actually I do not understand this completely: why would i need to concatenate "key" and "value" as the field name? Wouldn't simply indexing like this achieve the same result: _ = doc.dictionary.Select(p => CreateField(p.key, p.value, false, true)) ?
I'd still need to index "value" separately (for query case 2), but that is OK i guess.