Пример #1
0
        public virtual Query Build(IQueryNode queryNode)
        {
            BooleanQueryNode booleanNode = (BooleanQueryNode)queryNode;

            BooleanQuery       bQuery   = new BooleanQuery();
            IList <IQueryNode> children = booleanNode.GetChildren();

            if (children != null)
            {
                foreach (IQueryNode child in children)
                {
                    object obj = child.GetTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);

                    if (obj != null)
                    {
                        Query query = (Query)obj;

                        try
                        {
                            bQuery.Add(query, GetModifierValue(child));
                        }
                        catch (BooleanQuery.TooManyClausesException ex)
                        {
                            // LUCENENET: Factored out NLS/Message/IMessage so end users can optionally utilize the built-in .NET localization.
                            throw new QueryNodeException(string.Format(
                                                             QueryParserMessages.TOO_MANY_BOOLEAN_CLAUSES, BooleanQuery
                                                             .MaxClauseCount, queryNode
                                                             .ToQueryString(new EscapeQuerySyntax())), ex);
                        }
                    }
                }
            }

            return(bQuery);
        }
Пример #2
0
        public virtual Query Build(IQueryNode queryNode)
        {
            BooleanQueryNode booleanNode = (BooleanQueryNode)queryNode;

            BooleanQuery       bQuery   = new BooleanQuery();
            IList <IQueryNode> children = booleanNode.GetChildren();

            if (children != null)
            {
                foreach (IQueryNode child in children)
                {
                    object obj = child.GetTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);

                    if (obj != null)
                    {
                        Query query = (Query)obj;

                        try
                        {
                            bQuery.Add(query, GetModifierValue(child));
                        }
                        catch (BooleanQuery.TooManyClausesException ex)
                        {
                            throw new QueryNodeException(new Message(
                                                             QueryParserMessages.TOO_MANY_BOOLEAN_CLAUSES, BooleanQuery
                                                             .MaxClauseCount, queryNode
                                                             .ToQueryString(new EscapeQuerySyntax())), ex);
                        }
                    }
                }
            }

            return(bQuery);
        }
Пример #3
0
        public virtual Query Build(IQueryNode node)
        {
            // validates node
            BooleanQueryNode booleanNode = (BooleanQueryNode)node;

            IList <IQueryNode> children = booleanNode.GetChildren();

            SpanQuery[]
            spanQueries = new SpanQuery[children.size()];

            int i = 0;

            foreach (IQueryNode child in children)
            {
                spanQueries[i++] = (SpanQuery)child
                                   .GetTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
            }

            return(new SpanOrQuery(spanQueries));
        }