示例#1
0
        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);
        }
示例#4
0
文件: SolrNet.cs 项目: vladen/SolrNet
        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();
        }
示例#8
0
        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();
        }