Esempio n. 1
0
 /// <summary>
 /// Searches for the specified query in all default search fields, and in the specified locale.
 /// </summary>
 /// <param name="search">The search to modify.</param>
 /// <param name="query">The query text to search for.</param>
 /// <param name="locale">The locale to search in.</param>
 /// <returns>The search, modified to include the requested query.</returns>
 public static ITypeSearch <FindDocument> ForDefaultFields(this ITypeSearch <FindDocument> search, string query, string locale)
 {
     if (!string.IsNullOrEmpty(query))
     {
         ISearchConfiguration configuration = search.Client.GetConfiguration();
         IQueriedSearch <FindDocument, QueryStringQuery> search1 = search.For <FindDocument>(query);
         Enumerable.Empty <IFieldConfiguration>();
         foreach (IFieldConfiguration fieldConfiguration1 in !string.IsNullOrWhiteSpace(locale) ? configuration.GetDefaultFields(locale) : configuration.GetDefaultFields())
         {
             if (fieldConfiguration1.Type == typeof(string))
             {
                 IFieldConfiguration <string> fieldConfiguration2 = (IFieldConfiguration <string>)fieldConfiguration1;
                 search1 = search1.InField <FindDocument, QueryStringQuery>(fieldConfiguration2.TypedGetValueExpression, new double?());
             }
             else if (fieldConfiguration1.Type == typeof(IEnumerable <string>))
             {
                 IFieldConfiguration <IEnumerable <string> > fieldConfiguration2 = (IFieldConfiguration <IEnumerable <string> >)fieldConfiguration1;
                 search1 = search1.InField <FindDocument, QueryStringQuery>(fieldConfiguration2.TypedGetValueExpression, new double?());
             }
             else if (fieldConfiguration1.Type == typeof(int?))
             {
                 IFieldConfiguration <int?> fieldConfiguration2 = (IFieldConfiguration <int?>)fieldConfiguration1;
                 search1 = search1.InField <FindDocument, QueryStringQuery>(fieldConfiguration2.TypedGetValueExpression, new double?());
             }
             else if (fieldConfiguration1.Type == typeof(int))
             {
                 IFieldConfiguration <int> fieldConfiguration2 = (IFieldConfiguration <int>)fieldConfiguration1;
                 search1 = search1.InField <FindDocument, QueryStringQuery>(fieldConfiguration2.TypedGetValueExpression, new double?());
             }
             else if (fieldConfiguration1.Type == typeof(double?) || fieldConfiguration1.Type == typeof(float?))
             {
                 IFieldConfiguration <double?> fieldConfiguration2 = (IFieldConfiguration <double?>)fieldConfiguration1;
                 search1 = search1.InField <FindDocument, QueryStringQuery>(fieldConfiguration2.TypedGetValueExpression, new double?());
             }
             else
             {
                 if (!(fieldConfiguration1.Type == typeof(double)) && !(fieldConfiguration1.Type == typeof(float)))
                 {
                     throw new Exception(string.Format((IFormatProvider)CultureInfo.InvariantCulture, "Field of type {0} is not valid for the default search.", (object)fieldConfiguration1.Type.Name));
                 }
                 IFieldConfiguration <double> fieldConfiguration2 = (IFieldConfiguration <double>)fieldConfiguration1;
                 search1 = search1.InField <FindDocument, QueryStringQuery>(fieldConfiguration2.TypedGetValueExpression, new double?());
             }
         }
         search = (ITypeSearch <FindDocument>)search1;
     }
     return(search);
 }