コード例 #1
0
        public override IEnumerable <TElement> FindElements <TElement>(AlgoliaQuery query)
        {
            SearchLog.Log.Debug("Executing query: " + query.ToString());
            var index = _context.Index as AlgoliaBaseIndex;

            Assert.IsNotNull(index, "context.Index is not an instance of AlgoliaSearchIndex");

            var response = _repository.SearchAsync(query.Query).Result;

            var nodes = response["hits"];

            if (nodes != null)
            {
                foreach (var node in nodes)
                {
                    var jobj = node as JObject;

                    if (jobj == null)
                    {
                        throw new Exception("Wrong type");
                    }

                    yield return(new DefaultAlgoliaDocumentTypeMapper().MapToType <TElement>(jobj, null, null,
                                                                                             SearchSecurityOptions.DisableSecurityCheck));
                }
            }
        }
コード例 #2
0
        //public override IQueryable<TItem> GetQueryable()
        //{
        //    IQueryable<TItem> queryable = new GenericQueryable<TItem, AlgoliaQuery>(this, this.QueryMapper, this.QueryOptimizer, this.FieldNameTranslator);
        //    //(queryable as IHasTraceWriter).TraceWriter = this.TraceWriter;
        //    foreach (IPredefinedQueryAttribute predefinedQueryAttribute in
        //        GetTypeInheritanceEx(typeof(TItem))
        //        .SelectMany((t => t.GetCustomAttributes(typeof(IPredefinedQueryAttribute), true)
        //            .Cast<IPredefinedQueryAttribute>())).ToList())
        //        queryable = predefinedQueryAttribute.ApplyFilter(queryable, ValueFormatter);
        //    return queryable;
        //}

        //private IEnumerable<Type> GetTypeInheritanceEx(Type type)
        //{
        //    yield return type;
        //    for (Type baseType = type.BaseType; baseType != (Type)null; baseType = baseType.BaseType)
        //        yield return baseType;
        //}

        public override TResult Execute <TResult>(AlgoliaQuery query)
        {
            return(default(TResult));
        }