コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: ExtractCommandTests.cs プロジェクト: lovaex/SolrNet
        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);
        }
コード例 #7
0
        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();
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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
            });
        }
コード例 #10
0
        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);
        }
コード例 #11
0
ファイル: OptimizeCommandTests.cs プロジェクト: yorah/SolrNet
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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);
        }
コード例 #15
0
        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();
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        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);
        }