V8: Indexing of grid values containing JSON (#6201)

This commit is contained in:
stevemegson
2019-08-29 13:06:59 +01:00
committed by Sebastiaan Janssen
parent 4dad427a64
commit b254b4fcda
@@ -41,8 +41,6 @@ namespace Umbraco.Web.PropertyEditors
{
var controlVal = control.Value;
// TODO: If it's not a string, then it's a json formatted value -
// we cannot really index this in a smart way since it could be 'anything'
if (controlVal?.Type == JTokenType.String)
{
var str = controlVal.Value<string>();
@@ -53,14 +51,22 @@ namespace Umbraco.Web.PropertyEditors
//add the row name as an individual field
result.Add(new KeyValuePair<string, IEnumerable<object>>($"{property.Alias}.{rowName}", new[] { str }));
}
else if (controlVal is JContainer jc)
{
foreach (var s in jc.Descendants().Where(t => t.Type == JTokenType.String))
{
sb.Append(s.Value<string>());
sb.Append(" ");
}
}
}
}
//First save the raw value to a raw field
result.Add(new KeyValuePair<string, IEnumerable<object>>($"{UmbracoExamineIndex.RawFieldPrefix}{property.Alias}", new[] { rawVal }));
if (sb.Length > 0)
{
//First save the raw value to a raw field
result.Add(new KeyValuePair<string, IEnumerable<object>>($"{UmbracoExamineIndex.RawFieldPrefix}{property.Alias}", new[] { rawVal }));
//index the property with the combined/cleaned value
result.Add(new KeyValuePair<string, IEnumerable<object>>(property.Alias, new[] { sb.ToString() }));
}