public void ParseResponseWithLocation() { var mapper = new AttributesMappingManager(); var parser = new DefaultResponseParser<Doc>(new SolrDocumentResponseParser<Doc>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator<Doc>())); var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml"); var results = new SolrQueryResults<Doc>(); parser.Parse(xml, results); Assert.AreEqual(1, results.Count); Assert.AreEqual(new Location(51.5171, -0.1062), results[0].Loc); }
public void Parse_If_Both_Result_And_Groups_Are_Present() { var mapper = new AttributesMappingManager(); var parser = new DefaultResponseParser<TestDoc>(new SolrDocumentResponseParser<TestDoc>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator<TestDoc>())); var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithResultAndGroup.xml"); var results = new SolrQueryResults<TestDoc>(); parser.Parse(xml, results); Assert.AreEqual(1, results.Count); Assert.AreEqual(1, results.Grouping["titleId"].Ngroups); }
public void Parse_If_Both_Result_And_Groups_Are_Present() { var mapper = new AttributesMappingManager(); var parser = new DefaultResponseParser <TestDoc>(new SolrDocumentResponseParser <TestDoc>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <TestDoc>())); var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithResultAndGroup.xml"); var results = new SolrQueryResults <TestDoc>(); parser.Parse(xml, results); Assert.AreEqual(1, results.Count); Assert.AreEqual(1, results.Grouping["titleId"].Ngroups); }
public void ParseResponseWithLocation() { var mapper = new AttributesMappingManager(); var parser = new DefaultResponseParser <Doc>(new SolrDocumentResponseParser <Doc>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <Doc>())); var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml"); var results = new SolrQueryResults <Doc>(); parser.Parse(xml, results); Assert.AreEqual(1, results.Count); Assert.AreEqual(new Location(51.5171, -0.1062), results[0].Loc); }
public static ISolrBasicOperations <T> GetBasicServer <T>(ISolrConnection connection) { ISolrFieldParser fieldParser = new DefaultFieldParser(); IReadOnlyMappingManager mapper = new MemoizingMappingManager(new AttributesMappingManager()); ISolrDocumentPropertyVisitor visitor = new DefaultDocumentVisitor(mapper, fieldParser); ISolrDocumentResponseParser <T> parser; if (typeof(T) == typeof(Dictionary <string, object>)) { parser = (ISolrDocumentResponseParser <T>) new SolrDictionaryDocumentResponseParser(fieldParser); } else { parser = new SolrDocumentResponseParser <T>(mapper, visitor, new SolrDocumentActivator <T>()); } ISolrAbstractResponseParser <T> resultParser = new DefaultResponseParser <T>(parser); ISolrFieldSerializer fieldSerializer = new DefaultFieldSerializer(); ; ISolrQuerySerializer querySerializer = new DefaultQuerySerializer(fieldSerializer); ISolrFacetQuerySerializer facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, fieldSerializer); // validate why only this? ISolrMoreLikeThisHandlerQueryResultsParser <T> mlthResultParser = new SolrMoreLikeThisHandlerQueryResultsParser <T>(new[] { resultParser }); ISolrQueryExecuter <T> executor = new SolrQueryExecuter <T>(resultParser, connection, querySerializer, facetQuerySerializer, mlthResultParser); ISolrDocumentSerializer <T> documentSerializer; if (typeof(T) == typeof(Dictionary <string, object>)) { documentSerializer = (ISolrDocumentSerializer <T>) new SolrDictionarySerializer(fieldSerializer); } else { documentSerializer = new SolrDocumentSerializer <T>(mapper, fieldSerializer); } ISolrSchemaParser schemaParser = new SolrSchemaParser(); ISolrHeaderResponseParser headerParser = new HeaderResponseParser <T>(); ISolrDIHStatusParser dihStatusParser = new SolrDIHStatusParser(); ISolrExtractResponseParser extractResponseParser = new ExtractResponseParser(headerParser); ISolrBasicOperations <T> basicServer = new SolrBasicServer <T>(connection, executor, documentSerializer, schemaParser, headerParser, querySerializer, dihStatusParser, extractResponseParser); return(basicServer); }
public static AuthAdminSolrServer <T> CreateSolrServer(string connectionString, string coreIndex, IndexType indexType = IndexType.Solr) { var connection = BuildConnection.CreateSolrConnection(connectionString + coreIndex, indexType); var docSerializer = new SolrDocumentSerializer <T>(new AttributesMappingManager(), new DefaultFieldSerializer()); var headerResponseParser = new HeaderResponseParser <T>(); var solrFieldSerializer = new DefaultFieldSerializer(); var mapper = new AttributesMappingManager(); var dparser = new SolrDocumentResponseParser <T>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <T>()); var parser = new DefaultResponseParser <T>(dparser); var querySerializer = new DefaultQuerySerializer(solrFieldSerializer); var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var executer = new SolrQueryExecuter <T>(parser, connection, querySerializer, facetQuerySerializer, null); var basesolr = new SolrBasicServer <T>(connection, executer, docSerializer, null, headerResponseParser, null, null, null); return(new AuthAdminSolrServer <T>(basesolr, null, null)); }
public DefaultSolrLocator() { MappingManager = new MemoizingMappingManager(new AttributesMappingManager()); FieldParser = new DefaultFieldParser(); DocumentPropertyVisitor = new DefaultDocumentVisitor(MappingManager, FieldParser); if (typeof(T) == typeof(Dictionary <string, object>)) { DocumentResponseParser = (ISolrDocumentResponseParser <T>) new SolrDictionaryDocumentResponseParser(FieldParser); } else { DocumentResponseParser = new SolrDocumentResponseParser <T>(MappingManager, DocumentPropertyVisitor, new SolrDocumentActivator <T>()); } ResponseParser = new DefaultResponseParser <T>(DocumentResponseParser); SchemaParser = new SolrSchemaParser(); HeaderParser = new HeaderResponseParser <string>(); DihStatusParser = new SolrDIHStatusParser(); ExtractResponseParser = new ExtractResponseParser(HeaderParser); FieldSerializer = new DefaultFieldSerializer(); QuerySerializer = new DefaultQuerySerializer(FieldSerializer); FacetQuerySerializer = new DefaultFacetQuerySerializer(QuerySerializer, FieldSerializer); MlthResultParser = new SolrMoreLikeThisHandlerQueryResultsParser <T>(new[] { ResponseParser }); StatusResponseParser = new SolrStatusResponseParser(); if (typeof(T) == typeof(Dictionary <string, object>)) { DocumentSerializer = (ISolrDocumentSerializer <T>) new SolrDictionarySerializer(FieldSerializer); } else { DocumentSerializer = new SolrDocumentSerializer <T>(MappingManager, FieldSerializer); } HttpCache = new NullCache(); }
public static IExecuter <TNew> ChangeType <TNew, TOld>( this IExecuter <TOld> executer, MethodCallExpression expression, SelectExpressionsCollection selectExpressionsCollection) { if (executer == null) { throw new ArgumentNullException(nameof(executer)); } if (expression == null) { throw new ArgumentNullException(nameof(expression)); } if (selectExpressionsCollection == null) { throw new ArgumentNullException(nameof(selectExpressionsCollection)); } try { SolrQueryExecuter <TOld> oldExecuter = executer.Executer; ISolrConnection connection = oldExecuter.GetFieldRecursive <ISolrConnection>(); ISolrQuerySerializer serializer = oldExecuter.GetFieldRecursive <ISolrQuerySerializer>(); ISolrFacetQuerySerializer facetQuerySerializer = oldExecuter.GetFieldRecursive <ISolrFacetQuerySerializer>(); ISolrDocumentResponseParser <TOld> oldParser = oldExecuter.GetFieldRecursive <ISolrDocumentResponseParser <TOld> >(); ISolrFieldParser fieldParser = oldParser.GetFieldRecursive <ISolrFieldParser>(); SolrDictionaryDocumentResponseParser dictionaryParser = new SolrDictionaryDocumentResponseParser(fieldParser); ISolrDocumentResponseParser <TNew> docParser; if (expression.Method.DeclaringType == typeof(Queryable) && expression.Method.Name == nameof(Queryable.Cast)) { docParser = new CastResponseParser <TNew, TOld>(oldParser, dictionaryParser); } else if (expression.Method.DeclaringType == typeof(Queryable) && expression.Method.Name == nameof(Queryable.Select)) { docParser = new SelectResponseParser <TNew, TOld>(oldParser, dictionaryParser, expression, selectExpressionsCollection); } else { throw new InvalidOperationException( $"Unable to change query type from {typeof(TOld).Name} to {typeof(TNew).Name}. Method {expression.Method.Name} not supported"); } ISolrAbstractResponseParser <TNew> parser = new DefaultResponseParser <TNew>(docParser); SolrQueryExecuter <TNew> newExecuter = new SolrQueryExecuter <TNew>(parser, connection, serializer, facetQuerySerializer, new SolrMoreLikeThisHandlerQueryResultsParser <TNew>(Enumerable.Repeat(parser, 1))); newExecuter.DefaultHandler = oldExecuter.DefaultHandler; newExecuter.DefaultRows = oldExecuter.DefaultRows; newExecuter.MoreLikeThisHandler = oldExecuter.MoreLikeThisHandler; return(new SelectQueryExecutor <TNew>(newExecuter)); } catch (Exception e) { throw new InvalidOperationException( $"Unable to change solr query executer from {typeof(TOld)} to {typeof(TNew)}.", e); } }