Пример #1
0
        public async Task <SolrQueryResults <T> > ExecuteAsync(ISolrQuery q, ISolrQueryBody body, QueryOptions options,
                                                               CancellationToken cancellationToken = default(CancellationToken))
        {
            var handler        = options?.RequestHandler?.HandlerUrl ?? DefaultHandler;
            var param          = GetAllParameters(q, options);
            var results        = new SolrQueryResults <T>();
            var serializedBody = body?.Serialize() ?? String.Empty;

            XDocument xml;

            if (connection is IStreamSolrConnection cc)
            {
                using (var r = await cc.PostStreamAsStreamAsync(handler,
                                                                body?.MimeType ?? SimpleJsonQueryBody.ApplicationJson,
                                                                new MemoryStream(Encoding.UTF8.GetBytes(serializedBody)), param, cancellationToken))
                {
                    xml = XDocument.Load(r);
                }
            }
            else
            {
                var r = await connection.PostStreamAsync(handler,
                                                         body?.MimeType ?? SimpleJsonQueryBody.ApplicationJson,
                                                         new MemoryStream(Encoding.UTF8.GetBytes(serializedBody)), param);

                xml = XDocument.Parse(r);
            }

            resultParser.Parse(xml, results);
            return(results);
        }
Пример #2
0
        public async Task <SolrMoreLikeThisHandlerResults <T> > ExecuteAsync(SolrMLTQuery query, ISolrQueryBody body,
                                                                             MoreLikeThisHandlerQueryOptions options,
                                                                             CancellationToken cancellationToken = default(CancellationToken))
        {
            var param          = GetAllMoreLikeThisHandlerParameters(query, options).ToList();
            var serializedBody = body?.Serialize() ?? String.Empty;
            var r = await connection.PostStreamAsync(MoreLikeThisHandler, body?.MimeType ?? MediaTypeNames.Text.Plain,
                                                     new MemoryStream(Encoding.UTF8.GetBytes(serializedBody)), param);

            var qr = mlthResultParser.Parse(r);

            return(qr);
        }