Пример #1
0
        /// <summary>
        /// Determines whether [contains] [the specified node].
        /// </summary>
        /// <param name="node">The query node.</param>
        /// <param name="query">The query.</param>
        /// <returns>
        /// <c>true</c> if [contains] [the specified node]; otherwise, <c>false</c>.
        /// </returns>
        protected virtual bool Contains(QueryNode node, SubQuery query)
        {
            if (node.Element.Equals(query))
            {
                return(true);
            }

            if (node.IsQuery())
            {
                return(this.Contains(((Query)node.Element).FirstNode, query));
            }

            if (!node.IsLast)
            {
                return(this.Contains(node.NextNode, query));
            }

            return(false);
        }
Пример #2
0
        /// <summary>
        /// Adds the term query.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="subquery">The subquery.</param>
        /// <param name="condition">The condition.</param>
        /// <param name="isFirst">if set to <c>true</c> [is first].</param>
        protected virtual void AddSubQuery(LuceneSearch.BooleanQuery query, SubQuery subquery, QueryCondition condition)
        {
            string value = ID.IsID(subquery.Value) ? subquery.Value : subquery.Value.ToLower();
            string key   = subquery.Key.ToLower();

            if (subquery is AttributeQuery)
            {
                key = this.MapAttributes(key);
            }

            // optimizing search query
            if (key == Sitecore.Search.BuiltinFields.ID ||
                key == Sitecore.Search.BuiltinFields.Template ||
                key == BuiltinFields.ProductBaseTemplate ||
                key == Sitecore.Search.BuiltinFields.AllTemplates)
            {
                this.AddIdQuery(query, key, value, condition);
            }
            else
            {
                this.AddContentSubQuery(query, key, value, subquery.MatchVariant, condition);
            }
        }
    /// <summary>
    /// Adds the term query.
    /// </summary>
    /// <param name="query">The query.</param>
    /// <param name="subquery">The subquery.</param>
    /// <param name="condition">The condition.</param>
    /// <param name="isFirst">if set to <c>true</c> [is first].</param>
    protected virtual void AddSubQuery(LuceneSearch.BooleanQuery query, SubQuery subquery, QueryCondition condition)
    {
      string value = ID.IsID(subquery.Value) ? subquery.Value : subquery.Value.ToLower();
      string key = subquery.Key.ToLower();
      if (subquery is AttributeQuery)
      {
        key = this.MapAttributes(key);
      }

      // optimizing search query
      if (key == Sitecore.Search.BuiltinFields.ID ||
          key == Sitecore.Search.BuiltinFields.Template ||
          key == BuiltinFields.ProductBaseTemplate ||
          key == Sitecore.Search.BuiltinFields.AllTemplates)
      {
        this.AddIdQuery(query, key, value, condition);
      }
      else
      {
        this.AddContentSubQuery(query, key, value, subquery.MatchVariant, condition);
      }
    }
Пример #4
0
    /// <summary>
    /// Determines whether [contains] [the specified node].
    /// </summary>
    /// <param name="node">The query node.</param>
    /// <param name="query">The query.</param>
    /// <returns>
    /// <c>true</c> if [contains] [the specified node]; otherwise, <c>false</c>.
    /// </returns>
    protected virtual bool Contains(QueryNode node, SubQuery query)
    {
      if (node.Element.Equals(query))
      {
        return true;
      }

      if (node.IsQuery())
      {
        return this.Contains(((Query)node.Element).FirstNode, query);
      }

      if (!node.IsLast)
      {
        return this.Contains(node.NextNode, query);
      }

      return false;
    }