public static QueryTermNode ParseUserQuery(QueryFieldSet field_set, string token) { var term = new QueryTermNode(); // See if the query specifies a field, and if so, pull out the operator as well var field_alias = field_set.FindAlias(token); if (field_alias != null) { term.Field = field_set [field_alias]; foreach (var val in term.Field.CreateQueryValues()) { term.Value = val; var op_alias = term.Value.OperatorSet.FindAlias(token); if (op_alias != null) { term.Operator = term.Value.OperatorSet [op_alias]; var field_separator = token.IndexOf(op_alias); var temp = token.Substring(field_separator + op_alias.Length); term.Value.ParseUserQuery(temp); if (!term.Value.IsEmpty) { break; } } term.Operator = null; term.Value = null; } } if (term.Value == null) { term.Field = null; term.Value = QueryValue.CreateFromUserQuery(token, term.Field); term.Operator = StringQueryValue.Contains; } return(term); }