public void CommitWithOptions2_WaitSearcher() { var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.Equal("/update", url); Assert.Equal("<commit waitSearcher=\"false\" />", content); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var headerParser = new MSolrHeaderResponseParser(); headerParser.parse &= x => x.Stub(); var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, null, null, headerParser, null, null, null); ops.Commit(new CommitOptions { WaitSearcher = false }); Assert.Equal(1, connection.post.Calls); }
public void Execute() { var parameters = new ExtractParameters(null, "1", "text.doc"); var conn = new MSolrConnection(); conn.postStream += new Moroco.MFunc <string, string, System.IO.Stream, System.Collections.Generic.IEnumerable <System.Collections.Generic.KeyValuePair <string, string> >, string>((url, b, stream, kvs) => { Assert.Equal("/update/extract", url); var p = new[] { KV.Create("literal.id", parameters.Id), KV.Create("resource.name", parameters.ResourceName), }; Assert.Equal(p, kvs); //ignore order should be added return(""); }); var cmd = new ExtractCommand(parameters); cmd.Execute(conn); Assert.Equal(1, conn.postStream.Calls); }
public void AddWithBoost() { var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.Equal("/update", url); Assert.Equal("<add><doc boost=\"2.1\" /></add>", content); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var docSerializer = new SolrDocumentSerializer <TestDocumentWithoutUniqueKey>(new AttributesMappingManager(), new DefaultFieldSerializer()); var headerParser = new MSolrHeaderResponseParser(); headerParser.parse = headerParser.parse.Return(null); var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, docSerializer, null, headerParser, null, null, null); ops.AddWithBoost(new[] { new KeyValuePair <TestDocumentWithoutUniqueKey, double?>(new TestDocumentWithoutUniqueKey(), 2.1), }, null); Assert.Equal(1, connection.post.Calls); }
public void MultiCore_Rebind_IConnection() { var solrServers = new SolrServers { new SolrServerElement { Id = "core-0", Url = "http://*****:*****@"<?xml version=""1.0"" encoding=""UTF-8""?> <response> <lst name=""responseHeader""><int name=""status"">0</int><int name=""QTime"">0</int><lst name=""params""><str name=""q"">id:123456</str><str name=""?""/><str name=""version"">2.2</str></lst></lst><result name=""response"" numFound=""1"" start=""0""><doc></doc></result> </response> "; var solr1 = kernel.Get <ISolrOperations <Entity> >("core-0"); Assert.NotNull(solr1); Assert.Throws <SolrConnectionException>(() => solr1.Query("SomeField:Value")); MSolrConnection conn = new MSolrConnection(); conn.get &= x => x.Return(Response); kernel.Rebind <ISolrConnection>().ToConstant(conn).WithMetadata("CoreId", "core-0"); kernel.Rebind <ISolrConnection>().ToConstant(conn).WithMetadata("CoreId", "core-1"); var solr2 = kernel.Get <ISolrOperations <Entity> >("core-1"); Assert.NotNull(solr2); var r = solr2.Query("SomeField:Value"); Assert.Equal(1, r.NumFound); }
public void Optimize() { var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.AreEqual("/update", url); Assert.AreEqual("<optimize />", content); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var headerParser = new MSolrHeaderResponseParser(); headerParser.parse += _ => null; var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, null, null, headerParser, null, null, null); ops.Optimize(null); Assert.AreEqual(1, connection.post.Calls); }
public void Execute() { var parameters = new ExtractParameters(null, "1", "text.doc"); var conn = new MSolrConnection(); conn.postStream += (url, b, stream, kvs) => { Assert.AreEqual("/update/extract", url); var p = new[] { KV.Create("literal.id", parameters.Id), KV.Create("resource.name", parameters.ResourceName), }; CollectionAssert.AreEquivalent(p, kvs); return(""); }; var cmd = new ExtractCommand(parameters); cmd.Execute(conn); Assert.AreEqual(1, conn.postStream.Calls); }
public void CommitWithOptions() { var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.AreEqual("/update", url); Assert.AreEqual("<commit />", content); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; connection.post &= x => x.Expect(1); var headerParser = new MSolrHeaderResponseParser(); headerParser.parse += _ => null; var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, null, null, headerParser, null, null, null); ops.Commit(new CommitOptions()); connection.post.Verify(); }
public void DeleteByQuery() { var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.AreEqual("/update", url); Assert.AreEqual("<delete><query>id:123</query></delete>", content); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var headerParser = new MSolrHeaderResponseParser(); headerParser.parse += _ => null; var querySerializer = new MSolrQuerySerializer(); querySerializer.serialize += _ => "id:123"; var ops = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, null, null, null, headerParser, querySerializer, null, null); ops.Delete(null, new SolrQuery("id:123")); Assert.AreEqual(1, connection.post.Calls); }
public void OptimizeWithWaitOptions() { var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.AreEqual("/update", url); Assert.AreEqual("<optimize waitSearcher=\"true\" waitFlush=\"true\" />", content); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var headerParser = new MSolrHeaderResponseParser(); headerParser.parse += _ => null; var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, null, null, headerParser, null, null, null); ops.Optimize(new CommitOptions { WaitFlush = true, WaitSearcher = true }); }
public void QueryWithSortAndPagination() { const string qstring = "id:123"; const int start = 10; const int rows = 20; var connection = new MSolrConnection(); connection.get += (url, param) => { Assert.AreEqual("/select", url); var expectedParams = new Dictionary <string, string> { { "q", qstring }, { "start", start.ToString() }, { "rows", rows.ToString() }, { "sort", "id asc,name desc" }, }; CollectionAssert.AreEquivalent(expectedParams, param); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var querySerializer = new MSolrQuerySerializer(); querySerializer.serialize += _ => qstring; var resultParser = new MSolrAbstractResponseParser <TestDocumentWithUniqueKey>(); resultParser.parse &= x => x.Stub(); var executer = new SolrQueryExecuter <TestDocumentWithUniqueKey>(resultParser, connection, querySerializer, null, null); var solr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, executer, null, null, null, null, null, null); var r = solr.Query(new SolrQuery(qstring), new QueryOptions { Start = start, Rows = rows, OrderBy = new[] { new SortOrder("id", Order.ASC), new SortOrder("name", Order.DESC) } }); Assert.AreEqual(1, connection.get.Calls); }
public void ExecuteWithAllOptions() { var conn = new MSolrConnection(); conn.post += (url, content) => { Assert.AreEqual("/update", url); Assert.AreEqual("<optimize waitSearcher=\"true\" waitFlush=\"true\" expungeDeletes=\"true\" maxSegments=\"2\" />", content); Console.WriteLine(content); return(null); }; var cmd = new OptimizeCommand { MaxSegments = 2, ExpungeDeletes = true, WaitFlush = true, WaitSearcher = true }; cmd.Execute(conn); Assert.AreEqual(1, conn.post.Calls); }
public void DeleteByMultipleId() { var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.AreEqual("/update", url); Assert.AreEqual("<delete><id>0</id><id>0</id></delete>", content); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var headerParser = new MSolrHeaderResponseParser(); headerParser.parse += _ => null; var basic = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, null, null, null, headerParser, null, null, null); var ops = new SolrServer <TestDocumentWithUniqueKey>(basic, new AttributesMappingManager(), null); ops.Delete(new[] { new TestDocumentWithUniqueKey(), new TestDocumentWithUniqueKey(), }); Assert.AreEqual(1, connection.post.Calls); }
public void FacetField() { var connection = new MSolrConnection(); connection.get += (url, param) => { Assert.AreEqual("/select", url); var expectedParams = new Dictionary <string, string> { { "q", "" }, { "rows", SolrQueryExecuter <TestDocumentWithUniqueKey> .ConstDefaultRows.ToString() }, { "facet", "true" }, { "facet.field", "id" }, { "f.id.facet.limit", "3" }, }; CollectionAssert.AreEquivalent(expectedParams, param); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }; var parser = new MSolrAbstractResponseParser <TestDocumentWithUniqueKey>(); parser.parse &= x => x.Stub(); var querySerializer = new MSolrQuerySerializer(); querySerializer.serialize += _ => ""; var facetQuerySerializer = new DefaultFacetQuerySerializer(querySerializer, new DefaultFieldSerializer()); var executer = new SolrQueryExecuter <TestDocumentWithUniqueKey>(parser, connection, querySerializer, facetQuerySerializer, null); var solr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, executer, null, null, null, null, null, null); var r = solr.Query(new SolrQuery(""), new QueryOptions { Facet = new FacetParameters { Queries = new ISolrFacetQuery[] { new SolrFacetFieldQuery("id") { Limit = 3 }, }, } }); Assert.AreEqual(1, connection.get.Calls); }
public void AddWithParameters() { var xml = EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml"); var connection = new MSolrConnection(); connection.post += (url, content) => { Assert.AreEqual("/update", url); Assert.AreEqual("<add commitWithin=\"4343\" overwrite=\"false\"><doc /></add>", content); return(xml); }; var docSerializer = new SolrDocumentSerializer <TestDocumentWithoutUniqueKey>(new AttributesMappingManager(), new DefaultFieldSerializer()); var headerParser = new MSolrHeaderResponseParser(); headerParser.parse = headerParser.parse.Return(null); var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, docSerializer, null, headerParser, null, null, null); var parameters = new AddParameters { CommitWithin = 4343, Overwrite = false }; ops.AddWithBoost(new[] { new KeyValuePair <TestDocumentWithoutUniqueKey, double?>(new TestDocumentWithoutUniqueKey(), null), }, parameters); Assert.AreEqual(1, connection.post.Calls); }
public void Add() { var xml = EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml"); var connection = new MSolrConnection(); connection.post = connection.post .Expect(1) .Args("/update", "<add><doc /></add>") .Return(xml); var headerParser = new MSolrHeaderResponseParser(); headerParser.parse = headerParser.parse.Return(null); var docSerializer = new SolrDocumentSerializer <TestDocumentWithoutUniqueKey>(new AttributesMappingManager(), new DefaultFieldSerializer()); var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, docSerializer, null, headerParser, null, null, null); ops.AddWithBoost(new[] { new KeyValuePair <TestDocumentWithoutUniqueKey, double?>(new TestDocumentWithoutUniqueKey(), null), }, null); connection.post.Verify(); }
public void QueryWithSort() { const string qstring = "id:123"; var connection = new MSolrConnection(); connection.get += new MFunc <string, IEnumerable <KeyValuePair <string, string> >, string>((url, param) => { Assert.Equal("/select", url); var expectedParams = new Dictionary <string, string> { { "q", qstring }, { "rows", SolrQueryExecuter <TestDocumentWithUniqueKey> .ConstDefaultRows.ToString() }, { "sort", "id asc,name desc" }, }; Assert.Equal(expectedParams, param); //should ignore order return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.response.xml")); }); var querySerializer = new MSolrQuerySerializer(); querySerializer.serialize += _ => qstring; var resultParser = new MSolrAbstractResponseParser <TestDocumentWithUniqueKey>(); resultParser.parse &= x => x.Stub(); var executer = new SolrQueryExecuter <TestDocumentWithUniqueKey>(resultParser, connection, querySerializer, null, null); var solr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, executer, null, null, null, null, null, null); var r = solr.Query(new SolrQuery(qstring), new QueryOptions { OrderBy = new[] { new SortOrder("id", Order.ASC), new SortOrder("name", Order.DESC) } }); Assert.Equal(1, connection.get.Calls); }
public void MoreLikeThisHandlerQuery() { const string qstring = "id:123"; var connection = new MSolrConnection(); connection.get += (url, param) => { Assert.AreEqual("/mlt", url); var expectedParams = new Dictionary <string, string> { { "q", qstring }, { "rows", SolrQueryExecuter <TestDocumentWithUniqueKey> .ConstDefaultRows.ToString() }, { "mlt", "true" }, { "mlt.fl", "id" }, { "mlt.match.include", "true" }, }; CollectionAssert.AreEquivalent(expectedParams, param); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.responseWithInterestingTermsDetails.xml")); }; var querySerializer = new MSolrQuerySerializer(); querySerializer.serialize &= x => x.Return(qstring); var mlthParser = new MSolrMoreLikeThisHandlerQueryResultsParser <TestDocumentWithUniqueKey>(); mlthParser.parse += _ => new SolrMoreLikeThisHandlerResults <TestDocumentWithUniqueKey>(); var executer = new SolrQueryExecuter <TestDocumentWithUniqueKey>(null, connection, querySerializer, null, mlthParser); var solr = new SolrBasicServer <TestDocumentWithUniqueKey>(connection, executer, null, null, null, null, null, null); var r = solr.MoreLikeThis(new SolrMoreLikeThisHandlerQuery(new SolrQuery(qstring)), new MoreLikeThisHandlerQueryOptions(new MoreLikeThisHandlerParameters(new[] { "id" }) { MatchInclude = true })); Assert.AreEqual(1, connection.get.Calls); }
public void Extract() { var parameters = new ExtractParameters(null, "1", "test.doc"); var connection = new MSolrConnection(); connection.postStream += (url, contentType, content, param) => { Assert.AreEqual("/update/extract", url); Assert.AreEqual(parameters.Content, content); var expectedParams = new[] { KV.Create("literal.id", parameters.Id), KV.Create("resource.name", parameters.ResourceName), }; CollectionAssert.AreEquivalent(expectedParams, param); return(EmbeddedResource.GetEmbeddedString(GetType(), "Resources.responseWithExtractContent.xml")); }; var docSerializer = new SolrDocumentSerializer <TestDocumentWithoutUniqueKey>(new AttributesMappingManager(), new DefaultFieldSerializer()); var extractResponseParser = new MSolrExtractResponseParser { parse = _ => new ExtractResponse(null) }; var ops = new SolrBasicServer <TestDocumentWithoutUniqueKey>(connection, null, docSerializer, null, null, null, null, extractResponseParser); ops.Extract(parameters); Assert.AreEqual(1, connection.postStream.Calls); }