Пример #1
0
        public void SolrFieldTypeParsing()
        {
            var        schemaParser = new SolrSchemaParser();
            var        xml          = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.solrSchemaBasic.xml");
            SolrSchema schemaDoc    = schemaParser.Parse(xml);

            Assert.AreEqual(2, schemaDoc.SolrFieldTypes.Count);
            Assert.AreEqual("string", schemaDoc.SolrFieldTypes[0].Name);
            Assert.AreEqual("solr.StrField", schemaDoc.SolrFieldTypes[0].Type);
        }
Пример #2
0
        public void SolrCopyFieldParsing()
        {
            var        schemaParser = new SolrSchemaParser();
            var        xml          = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.solrSchemaBasic.xml");
            SolrSchema schemaDoc    = schemaParser.Parse(xml);

            Assert.AreEqual(1, schemaDoc.SolrCopyFields.Count);
            Assert.AreEqual("name", schemaDoc.SolrCopyFields[0].Source);
            Assert.AreEqual("nameSort", schemaDoc.SolrCopyFields[0].Destination);
        }
Пример #3
0
        public void PropertyWithoutSetter()
        {
            var parser  = GetDocumentParser <TestDocWithoutSetter>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml");
            var docNode = xml.XPathSelectElement("response/result/doc");
            var doc     = parser.ParseDocument(docNode);

            Assert.IsNotNull(doc);
            Assert.AreEqual(0, doc.Id);
        }
Пример #4
0
        private static SolrQueryResults <T> ParseFromResource <T>(string xmlResource)
        {
            var docParser = GetDocumentParser <T>();
            var parser    = new ResultsResponseParser <T>(docParser);
            var r         = new SolrQueryResults <T>();
            var xml       = EmbeddedResource.GetEmbeddedXml(typeof(SolrQueryResultsParserTests), xmlResource);

            parser.Parse(xml, r);
            return(r);
        }
Пример #5
0
        public void Parse()
        {
            var mapper  = new AttributesMappingManager();
            var parser  = new CollapseExpandResponseParser <Doc>(new SolrDocumentResponseParser <Doc>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <Doc>()));
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.collapseWithoutExpandResponse.xml");
            var results = new SolrQueryResults <Doc>();

            parser.Parse(xml, results);
            Assert.IsNull(results.CollapseExpand);
        }
Пример #6
0
        public void ParseDocument()
        {
            var parser  = GetDocumentParser <TestDocument>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml");
            var docNode = xml.XPathSelectElement("response/result/doc");
            var doc     = parser.ParseDocument(docNode);

            Assert.NotNull(doc);
            Assert.Equal(123456, doc.Id);
        }
Пример #7
0
        public void ReplicationStatusError()
        {
            var parser  = new ReplicationStatusResponseParser <string>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseReplicationStatusError.xml");
            var results = parser.Parse(xml);

            Assert.IsNotNull(results.responseHeader);
            Assert.AreEqual("ERROR", results.status);
            Assert.IsNotNull(results.message);
            Assert.AreEqual("No slave configured or no 'masterUrl' Specified", results.message);
        }
Пример #8
0
        public void ParseSpellChecking()
        {
            var parser        = new SpellCheckResponseParser <Product>();
            var xml           = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithSpellChecking.xml");
            var docNode       = xml.XPathSelectElement("response/lst[@name='spellcheck']");
            var spellChecking = parser.ParseSpellChecking(docNode);

            Assert.IsNotNull(spellChecking);
            Assert.AreEqual("dell ultrasharp", spellChecking.Collation);
            Assert.AreEqual(2, spellChecking.Count);
        }
Пример #9
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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        public void ParseSpellChecking(string fileTest)
        {
            var parser        = new SpellCheckResponseParser <Product>();
            var xml           = EmbeddedResource.GetEmbeddedXml(GetType(), fileTest);
            var docNode       = xml.XPathSelectElement("response/lst[@name='spellcheck']");
            var spellChecking = parser.ParseSpellChecking(docNode);

            Assert.IsNotNull(spellChecking);
            Assert.That(spellChecking.Collations, Is.TypeOf <List <string> >());
            Assert.AreEqual("dell ultrasharp", spellChecking.Collations.First());
            Assert.AreEqual(2, spellChecking.Count);
        }
Пример #14
0
        public void EmptyEnumThrows()
        {
            var mapper = new MappingManager();

            mapper.Add(typeof(TestDocWithEnum).GetProperty("En"), "basicview");
            var docParser = GetDocumentParser <TestDocWithEnum>(mapper);
            var parser    = new ResultsResponseParser <TestDocWithEnum>(docParser);
            var xml       = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml");
            var results   = new SolrQueryResults <TestDocWithEnum>();

            parser.Parse(xml, results);
        }
Пример #15
0
        public void ParseResultsWithGroups()
        {
            var mapper  = new AttributesMappingManager();
            var parser  = new GroupingResponseParser <Product>(new SolrDocumentResponseParser <Product>(mapper, new DefaultDocumentVisitor(mapper, new DefaultFieldParser()), new SolrDocumentActivator <Product>()));
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithGroupingOnInstock.xml");
            var results = new SolrQueryResults <Product>();

            parser.Parse(xml, results);
            Assert.AreEqual(1, results.Grouping.Count);
            Assert.AreEqual(2, results.Grouping["inStock"].Groups.Count());
            Assert.AreEqual(13, results.Grouping["inStock"].Groups.First().NumFound);
        }
Пример #16
0
        public void ParseSpellCheckingCollateTrueInCollations()
        {
            //Collations node now separates from collation nodes from suggestions
            var parser        = new SpellCheckResponseParser <Product>();
            var xml           = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithSpellCheckingCollationInCollations.xml");
            var docNode       = xml.XPathSelectElement("response/lst[@name='spellcheck']");
            var spellChecking = parser.ParseSpellChecking(docNode);

            Assert.NotNull(spellChecking);
            Assert.Equal("dell ultrasharp", spellChecking.Collations.First().CollationQuery);
            Assert.Equal(2, spellChecking.Count);
            Assert.Equal(1, spellChecking.Collations.Count);
        }
Пример #17
0
        public void ParseResponseWithSimpleDebugExplanation()
        {
            var parser  = new DebugResponseParser <object>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithSimpleDebugDetails.xml");
            var results = new SolrQueryResults <object>();

            parser.Parse(xml, results);

            Assert.Equal(0, results.Count);
            Assert.True(results.Debug is DebugResults.PlainDebugResults);
            Assert.NotNull(results.Debug.Explanation);
            Assert.Equal(2, results.Debug.Explanation.Count);
        }
Пример #18
0
        public void ParseResponseHeader()
        {
            var parser  = new HeaderResponseParser <TestDocument>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml");
            var docNode = xml.XPathSelectElement("response/lst[@name='responseHeader']");
            var header  = parser.ParseHeader(docNode);

            Assert.AreEqual(1, header.Status);
            Assert.AreEqual(15, header.QTime);
            Assert.AreEqual(2, header.Params.Count);
            Assert.AreEqual("id:123456", header.Params["q"]);
            Assert.AreEqual("2.2", header.Params["version"]);
        }
        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);
        }
Пример #20
0
        public void ParseSpellCheckingCollateTrueInSuggestions()
        {
            // Multiple collation nodes are included in suggestions in Solr 4.x, included for backward compatibility
            var parser        = new SpellCheckResponseParser <Product>();
            var xml           = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithSpellCheckingCollationInSuggestions.xml");
            var docNode       = xml.XPathSelectElement("response/lst[@name='spellcheck']");
            var spellChecking = parser.ParseSpellChecking(docNode);

            Assert.NotNull(spellChecking);
            Assert.Equal("audit", spellChecking.Collation);
            Assert.Equal(2, spellChecking.Count);
            Assert.Equal(2, spellChecking.Collations.Count);
        }
Пример #21
0
        public void ParseDocumentWithMappingManager()
        {
            var mapper = new MappingManager();

            mapper.Add(typeof(TestDocumentWithoutAttributes).GetProperty("Id"), "id");
            var parser  = GetDocumentParser <TestDocumentWithoutAttributes>(mapper);
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.response.xml");
            var docNode = xml.XPathSelectElement("response/result/doc");
            var doc     = parser.ParseDocument(docNode).ToList();

            Assert.IsNotNull(doc);
            Assert.AreEqual(123456, doc[0].Id);
        }
Пример #22
0
        public void SolrFieldParsing()
        {
            var        schemaParser = new SolrSchemaParser();
            var        xml          = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.solrSchemaBasic.xml");
            SolrSchema schemaDoc    = schemaParser.Parse(xml);

            Assert.AreEqual(4, schemaDoc.SolrFields.Count);
            Assert.AreEqual("id", schemaDoc.SolrFields[0].Name);
            Assert.IsTrue(schemaDoc.SolrFields[0].IsRequired);
            Assert.IsFalse(schemaDoc.SolrFields[2].IsRequired);
            Assert.IsTrue(schemaDoc.SolrFields[3].IsMultiValued);
            Assert.IsFalse(schemaDoc.SolrFields[0].IsMultiValued);
            Assert.AreEqual("string", schemaDoc.SolrFields[0].Type.Name);
        }
Пример #23
0
        public void ParseTermVector2()
        {
            var parser  = new TermVectorResultsParser <Product>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithTermVector2.xml");
            var docNode = xml.XPathSelectElement("response/lst[@name='termVectors']");
            var docs    = parser.ParseDocuments(docNode).ToList();

            Assert.IsNotNull(docs);
            Assert.AreEqual(1, docs.Count);
            Assert.AreEqual("20", docs[0].UniqueKey);
            var vectors = docs[0].TermVector.ToList();

            Assert.AreEqual(15, vectors.Count);
        }
Пример #24
0
        public void ParseClustering()
        {
            var parser     = new ClusterResponseParser <Product>();
            var xml        = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithClustering.xml");
            var docNode    = xml.XPathSelectElement("response/arr[@name='clusters']");
            var clustering = parser.ParseClusterNode(docNode);

            Assert.IsNotNull(clustering);
            Assert.AreEqual(89, clustering.Clusters.Count());
            Assert.AreEqual("International", clustering.Clusters.First().Label);
            Assert.AreEqual(33.729704170097, clustering.Clusters.First().Score);
            Assert.AreEqual(8, clustering.Clusters.First().Documents.Count());
            Assert.AreEqual("19622040", clustering.Clusters.First().Documents.First());
        }
Пример #25
0
        public void ParseDebugResponse()
        {
            var parser  = new DebugResponseParser <object>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithSimpleDebugDetails.xml");
            var results = new SolrQueryResults <object>();

            parser.Parse(xml, results);

            Assert.Equal(0, results.Count);
            Assert.True(results.Debug is DebugResults.PlainDebugResults);
            Assert.NotNull(results.Debug.Timing);
            Assert.Equal(15, results.Debug.Timing.TotalTime);
            Assert.Equal(7, results.Debug.Timing.Prepare.Count);
            Assert.Equal(7, results.Debug.Timing.Process.Count);
        }
Пример #26
0
        public void StringMappedToStringShouldNotReturnError()
        {
            var mappingTypesCompatibleRule = new MappingTypesAreCompatibleWithSolrTypesRule(new[] { new StringSolrFieldTypeChecker() });

            var mgr           = new MappingManager();
            var schemaManager = new MappingValidator(mgr, new[] { mappingTypesCompatibleRule });

            var schemaXmlDocument = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.solrSchemaMappingTypes.xml");
            var solrSchemaParser  = new SolrSchemaParser();
            var schema            = solrSchemaParser.Parse(schemaXmlDocument);

            var validationResults = schemaManager.EnumerateValidationResults(typeof(SchemaMappingTestDocument), schema).ToList();

            Assert.Equal(0, validationResults.Count);
        }
Пример #27
0
        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]);
        }
Пример #28
0
        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]);
        }
Пример #29
0
        public void ParseResultsWithFacetPivot()
        {
            var parser = new FacetsResponseParser <Product>();
            var xml    = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithFacetPivoting.xml");
            var r      = new SolrQueryResults <Product>();

            parser.Parse(xml, r);
            Assert.IsNotNull(r.FacetPivots);
            //Console.WriteLine(r.FacetPivots.Count);
            Assert.IsTrue(r.FacetPivots.ContainsKey("inStock,manu"));

            Assert.AreEqual(2, r.FacetPivots["inStock,manu"].Count);
            Assert.AreEqual("inStock", r.FacetPivots["inStock,manu"][0].Field);
            Assert.AreEqual(10, r.FacetPivots["inStock,manu"][0].ChildPivots.Count);
        }
Пример #30
0
        public void Parse2()
        {
            var parser  = new CollapseResponseParser <TestDoc>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.collapseResponse2.xml");
            var results = new SolrQueryResults <TestDoc>();

            parser.Parse(xml, results);
            Assert.IsNotNull(results.Collapsing);
            Assert.AreEqual("manu_exact", results.Collapsing.Field);
            Assert.AreEqual(3, results.Collapsing.CollapsedDocuments.Count);
            var firstCollapse = results.Collapsing.CollapsedDocuments.ElementAt(0);

            Assert.AreEqual("F8V7067-APL-KIT", firstCollapse.Id);
            Assert.AreEqual(1, firstCollapse.CollapseCount);
            Assert.AreEqual("Belkin", firstCollapse.FieldValue);
        }