private static void SetupSolr() { var connection = new SolrConnection(_httpSolrTest); Startup.InitContainer(); Startup.Container.Remove <IReadOnlyMappingManager>(); var mapper = new MappingManager(); Mappings(mapper); Startup.Container.Register <IReadOnlyMappingManager>(c => mapper); Startup.Container.Remove <ISolrDocumentPropertyVisitor>(); var propertyVisitor = new DefaultDocumentVisitor(mapper, Startup.Container.GetInstance <ISolrFieldParser>()); Startup.Container.Register <ISolrDocumentPropertyVisitor>(c => propertyVisitor); Startup.Init <Child>(connection); Startup.Init <Parent>(connection); Startup.Init <Dictionary <string, object> >(connection); Startup.Container.RemoveAll <ISolrDocumentResponseParser <Dictionary <string, object> > >(); Startup.Container.Register <ISolrDocumentResponseParser <Dictionary <string, object> > >(c => new SolrDictionaryDocumentResponseParser(c.GetInstance <ISolrFieldParser>())); var solr = ServiceLocator.Current.GetInstance <ISolrOperations <Child> >(); solr.Delete(SolrQuery.All); solr.Commit(); }
public void SetPropertyNullableDouble() { var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithArrays.xml"); var fieldNode = xml.XPathSelectElement("response/result/doc/float[@name='price']"); var mapper = new AttributesMappingManager(); var visitor = new DefaultDocumentVisitor(mapper, new DefaultFieldParser()); var doc = new TestDocumentWithNullableDouble(); visitor.Visit(doc, "price", fieldNode); Assert.AreEqual(92d, doc.Price); }
public void Parse() { var mapper = new AttributesMappingManager(); var fieldParser = new DefaultFieldParser(); var docVisitor = new DefaultDocumentVisitor(mapper, fieldParser); var docParser = new SolrDocumentResponseParser <Product>(mapper, docVisitor, new SolrDocumentActivator <Product>()); var p = new MoreLikeThisHandlerMatchResponseParser <Product>(docParser); var mltResults = new SolrMoreLikeThisHandlerResults <Product>(); var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithMLTHandlerMatch.xml"); p.Parse(xml, mltResults); Assert.IsNotNull(mltResults.Match); }
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 void SetPropertyWithArrayOfStrings() { var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithArrays.xml"); var fieldNode = xml.XPathSelectElement("response/result/doc/arr[@name='cat']"); var mapper = new AttributesMappingManager(); var visitor = new DefaultDocumentVisitor(mapper, new DefaultFieldParser()); var doc = new TestDocumentWithArrays(); visitor.Visit(doc, "cat", fieldNode); Assert.AreEqual(2, doc.Cat.Count); var cats = new List <string>(doc.Cat); Assert.AreEqual("electronics", cats[0]); Assert.AreEqual("hard drive", cats[1]); }
public void SetPropertyWithArrayOfIntsToIntArray() { var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithArrays.xml"); var fieldNode = xml.XPathSelectElement("response/result/doc/arr[@name='numbers']"); var mapper = new AttributesMappingManager(); var visitor = new DefaultDocumentVisitor(mapper, new DefaultFieldParser()); var doc = new TestDocumentWithArrays2(); visitor.Visit(doc, "numbers", fieldNode); Assert.AreEqual(2, doc.Numbers.Length); var numbers = new List <int>(doc.Numbers); Assert.AreEqual(1, numbers[0]); Assert.AreEqual(2, numbers[1]); }
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(); }
private void SetupSolr() { Startup.InitContainer(); Startup.Container.Remove <IReadOnlyMappingManager>(); var mapper = new MappingManager(); mapper.Add(typeof(Entity).GetProperty("Description"), "name"); mapper.Add(typeof(Entity).GetProperty("Id"), "id"); mapper.Add(typeof(Entity).GetProperty("Tags"), "cat"); Startup.Container.Register <IReadOnlyMappingManager>(c => mapper); Startup.Container.Remove <ISolrDocumentPropertyVisitor>(); var propertyVisitor = new DefaultDocumentVisitor(mapper, Startup.Container.GetInstance <ISolrFieldParser>()); Startup.Container.Register <ISolrDocumentPropertyVisitor>(c => propertyVisitor); Startup.Init <Entity>("http://localhost:8983/solr"); var solr = ServiceLocator.Current.GetInstance <ISolrOperations <Entity> >(); solr.Delete(SolrQuery.All).Commit(); }