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);
 }
예제 #2
0
        public void PropertyWithoutSetter()
        {
            var mapper  = new AttributesMappingManager();
            var parser  = new SolrDocumentResponseParser <TestDocWithoutSetter>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <TestDocWithoutSetter>());
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml");
            var docNode = xml.XPathSelectElement("response/result/doc");
            var doc     = parser.ParseDocument(docNode, mapper.GetFields(typeof(TestDocument)));

            Assert.IsNotNull(doc);
            Assert.AreEqual(0, doc.Id);
        }
        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 ParseDictionaryOfCollection() {
            var xml = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.docWithDynamicFields.xml");
            var mapper = new AttributesMappingManager();
            var parser = new SolrDocumentResponseParser<Entity>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator<Entity>());
            var entity = parser.ParseDocument(xml.Root);
            Assert.IsNotNull(entity, "entity was null");
            Assert.IsNotNull(entity.Attributes, "attributes was null");
            Assert.AreEqual(16, entity.Attributes.Count);

            var attr2 = entity.Attributes["2"];
            Assert.AreEqual(5, attr2.Count);
            Assert.Contains(attr2, 63);
            Assert.Contains(attr2, 64);
            Assert.Contains(attr2, 65);
            Assert.Contains(attr2, 66);
            Assert.Contains(attr2, 102);
        }
예제 #6
0
        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 void ParseDictionaryOfCollection()
        {
            var xml    = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.docWithDynamicFields.xml");
            var mapper = new AttributesMappingManager();
            var parser = new SolrDocumentResponseParser <Entity>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <Entity>());
            var entity = parser.ParseDocument(xml.Root);

            Assert.NotNull(entity);
            Assert.NotNull(entity.Attributes);
            Assert.Equal(16, entity.Attributes.Count);

            var attr2 = entity.Attributes["2"];

            Assert.Equal(5, attr2.Count);
            Assert.Contains(63, attr2);
            Assert.Contains(64, attr2);
            Assert.Contains(65, attr2);
            Assert.Contains(66, attr2);
            Assert.Contains(102, attr2);
        }
예제 #8
0
        public void ParseDictionaryOfCollection()
        {
            var xml      = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.docWithDynamicFields.xml");
            var mapper   = new AttributesMappingManager();
            var parser   = new SolrDocumentResponseParser <Entity>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <Entity>());
            var entities = parser.ParseDocument(xml.Root).ToList();
            var entity   = entities[0];

            Assert.IsNotNull(entity, "entity was null");
            Assert.IsNotNull(entity.Attributes, "attributes was null");
            Assert.AreEqual(16, entity.Attributes.Count);

            var attr2 = entity.Attributes["2"];

            Assert.AreEqual(5, attr2.Count);
            Assert.Contains(attr2, 63);
            Assert.Contains(attr2, 64);
            Assert.Contains(attr2, 65);
            Assert.Contains(attr2, 66);
            Assert.Contains(attr2, 102);
        }
        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();
        }