示例#1
0
        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);
        }