Exemplo n.º 1
0
        public void SettingFieldListReturnsOnlyFieldsSpecified()
        {
            var req = new RiakSearchRequest
            {
                Query            = new RiakFluentSearch(Index, "name_s"),
                PreSort          = PreSort.Key,
                DefaultOperation = DefaultOperation.Or,
                ReturnFields     = new List <string>
                {
                    RiakConstants.SearchFieldKeys.Id,
                    "bio_tsd",
                    "favorites.album_tsd"
                }
            };


            // name_s:{integer}Al* AND bio_tsd:awesome AND bio_tsd:an AND (bio_tsd:mathematician OR favorites.album_tsd:Fame)
            req.Query.Search(Token.StartsWith(_randomId + "Al"))
            .And("bio_tsd", "awesome")
            .And("an")
            .And("mathematician", s => s.Or("favorites.album_tsd", "Fame"));


            Console.WriteLine(req.Query.ToString());

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(3);
            result.Value.Documents[0].Id.ShouldNotBeNull();
        }
Exemplo n.º 2
0
        public void RangeQuery()
        {
            ids = PutAnimals();

            var search = new RiakSearchRequest("famous", "age_i:[30 TO *]");

            /*
             * Fluent interface:
             *
             * var search = new RiakSearchRequest
             * {
             *  Query = new RiakFluentSearch("famous", "age_i")
             *      .Between("30", "*")
             *      .Build()
             * };
             */

            var rslt = client.Search(search);

            CheckResult(rslt);

            RiakSearchResult searchResult = rslt.Value;

            foreach (RiakSearchResultDocument doc in searchResult.Documents)
            {
                var args = new[] {
                    doc.BucketType,
                    doc.Bucket,
                    doc.Key,
                    string.Join(", ", doc.Fields.Select(f => f.Value).ToArray())
                };
                Console.WriteLine("BucketType: {0} Bucket: {1} Key: {2} Values: {3}", args);
            }
        }
Exemplo n.º 3
0
        public void SettingFieldListReturnsOnlyFieldsSpecified()
        {
            var req = new RiakSearchRequest
            {
                Query            = new RiakFluentSearch("riak_search_bucket", "bio"),
                PreSort          = PreSort.Key,
                DefaultOperation = DefaultOperation.Or,
                ReturnFields     = new List <string>
                {
                    "bio", "favorites_album"
                }
            };

            req.Query.Search("awesome")
            .And("an")
            .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            // "id" field is always returned
            result.Value.Documents[0].Fields.Count.ShouldEqual(3);
            result.Value.Documents[0].Id.ShouldNotBeNull();
        }
        public void SettingSearchOnRiakBucketMakesBucketSearchable()
        {
            var bucket = string.Format("{0}_{1}", Bucket, Guid.NewGuid());
            var key    = Guid.NewGuid().ToString();
            var props  = Client.GetBucketProperties(bucket);

            props.SetSearch(true);

            var setResult = Client.SetBucketProperties(bucket, props);

            setResult.ShouldBeTrue();

            var obj       = new RiakObject(bucket, key, new { name = "OJ", age = 34 });
            var putResult = Client.Put(obj);

            putResult.ShouldNotBeNull();

            var q = new RiakFluentSearch(bucket, "name")
                    .Search("OJ")
                    .And("age", "34")
                    .Build();

            var search = new RiakSearchRequest
            {
                Query = q
            };

            var searchResult = Client.Search(search);

            searchResult.ShouldNotBeNull();
            searchResult.NumFound.ShouldEqual(1u);
            searchResult.Documents[0].Fields.Count.ShouldEqual(3);
            searchResult.Documents[0].Fields.First(x => x.Key == "id").Value.ShouldEqual(key);
        }
        public void SettingLegacySearchOnRiakBucketMakesBucketSearchable()
        {
            var bucket = Guid.NewGuid().ToString();
            var key = Guid.NewGuid().ToString();
            var props = Client.GetBucketProperties(bucket).Value;
            props.SetLegacySearch(true);

            var setResult = Client.SetBucketProperties(bucket, props);
            setResult.IsSuccess.ShouldBeTrue(setResult.ErrorMessage);

            var obj = new RiakObject(bucket, key, new { name = "OJ", age = 34 });
            var putResult = Client.Put(obj);
            putResult.IsSuccess.ShouldBeTrue(putResult.ErrorMessage);

            var q = new RiakFluentSearch(bucket, "name")
                .Search("OJ")
                .And("age", "34")
                .Build();

            var search = new RiakSearchRequest
            {
                Query = q
            };

            var searchResult = Client.Search(search);
            searchResult.IsSuccess.ShouldBeTrue(searchResult.ErrorMessage);
            searchResult.Value.NumFound.ShouldEqual(1u);
            searchResult.Value.Documents[0].Fields.Count.ShouldEqual(3);
            searchResult.Value.Documents[0].Fields.First(x => x.Key == "id").Value.ShouldEqual(key);
        }
Exemplo n.º 6
0
        public void SettingFieldListReturnsOnlyFieldsSpecified()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));
            Client.Put(new RiakObject(Bucket, RiakSearchKey2, RiakSearchDoc2, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query            = new RiakFluentSearch("riak_search_bucket", "bio"),
                PreSort          = PreSort.Key,
                DefaultOperation = DefaultOperation.Or,
                ReturnFields     = new List <string>
                {
                    "bio", "favorites_album"
                }
            };

            req.Query.Search("awesome")
            .And("an")
            .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.Search(req);

            result.ShouldNotBeNull();
            result.NumFound.ShouldEqual(1u);
            result.Documents.Count.ShouldEqual(1);
            // "id" field is always returned
            result.Documents[0].Fields.Count.ShouldEqual(3);
            result.Documents[0].Id.ShouldNotBeNull();
        }
Exemplo n.º 7
0
        private void button5_Click(object sender, EventArgs e)
        {
            var search = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("famous", "name_s")
                        .Search("Lion*")
                        .Build()
            };

            var rslt = client.Search(search);
            RiakSearchResult searchResult = rslt.Value;

            foreach (RiakSearchResultDocument doc in searchResult.Documents)
            {
                var args = new[] {
                    doc.BucketType,
                    doc.Bucket,
                    doc.Key,
                    string.Join(", ", doc.Fields.Select(f => f.Value).ToArray())
                };
                Console.WriteLine(
                    format: "BucketType: {0} Bucket: {1} Key: {2} Values: {3}",
                    args);
            }


            var search1 = new RiakSearchRequest("famous", "age_i:[36 TO *]");
            var rslt1   = client.Search(search1);
        }
Exemplo n.º 8
0
        public void SearchingWithMoreComplexFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch(Index, "name_s")
            };

            // name_s:{integer}Al* AND bio_tsd:awesome AND bio_tsd:an AND (bio_tsd:mathematician OR favorites.album_tsd:Fame)
            req.Query.Search(Token.StartsWith(_randomId + "Al"))
            .And("bio_tsd", "awesome")
            .And("an")
            .And("mathematician", s => s.Or("favorites.album_tsd", "Fame"));

            Console.WriteLine(req.Query.ToString());

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);

            // [ _yz_rt, _yz_rb, _yz_rk, score, _yz_id ]
            // [ name_s, age_i, leader_b, bio_tsd, favorites.book_tsd , favorites.album_tsd ]
            result.Value.Documents[0].Fields.Count.ShouldEqual(10);
            var id = result.Value.Documents[0].Id;

            id.Contains("a.public").ShouldBeTrue(string.Format("{0} does not contain {1}", id, "a.public"));
        }
Exemplo n.º 9
0
        public void SimpleQueryWithGet()
        {
            ids = PutAnimals();

            var search = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("famous", "name_s")
                        .Search("Lion*")
                        .Build()
            };

            var searchRslt = client.Search(search);

            CheckResult(searchRslt);

            RiakSearchResult searchResult = searchRslt.Value;

            RiakSearchResultDocument doc = searchResult.Documents.First();
            var id   = new RiakObjectId(doc.BucketType, doc.Bucket, doc.Key);
            var rslt = client.Get(id);

            CheckResult(rslt);

            RiakObject obj = rslt.Value;

            Console.WriteLine(Encoding.UTF8.GetString(obj.Value));
        }
Exemplo n.º 10
0
        public RiakResult <RiakSearchResult> Search(RiakSearchRequest search)
        {
            var request  = search.ToMessage();
            var response = UseConnection(conn => conn.PbcWriteRead <RpbSearchQueryReq, RpbSearchQueryResp>(request));

            if (response.IsSuccess)
            {
                return(RiakResult <RiakSearchResult> .Success(new RiakSearchResult(response.Value)));
            }

            return(RiakResult <RiakSearchResult> .Error(response.ResultCode, response.ErrorMessage, response.NodeOffline));
        }
        public void UsingFluentQueryProducesSameQueryAsString()
        {
            string index = "index";
            string field = "data_s";
            string search = "frazzle";
            string solrQuery = string.Format("{0}:{1}", field, search);

            var fluentSearch = new RiakFluentSearch(index, field).Search(search).Build();
            var s1 = new RiakSearchRequest { Query = fluentSearch };
            var s2 = new RiakSearchRequest(index, solrQuery);

            Assert.AreEqual(s1, s2);
        }
Exemplo n.º 12
0
        public void SearchingWithWildcardFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch(Index, "name_s").Search(Token.StartsWith(_randomId + "Al")).Build()
            };

            var searchResult = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.TwoMatchesFound);

            searchResult.IsSuccess.ShouldBeTrue(searchResult.ErrorMessage);
            searchResult.Value.NumFound.ShouldEqual(2u);
            searchResult.Value.Documents.Count.ShouldEqual(2);
        }
Exemplo n.º 13
0
        public void QueryWithOperations()
        {
            var search = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("famous", "leader_b")
                        .Search("true").AndBetween("age_i", "30", "*")
                        .Build()
            };

            var rslt = client.Search(search);

            CheckResult(rslt);
        }
        public void SearchingWithSimpleFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "name").Search("Alyssa").Build()
            };

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);
            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.ShouldEqual("a.hacker");
        }
        public void SearchingWithWildcardFluentQueryWorksCorrectly()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));
            Client.Put(new RiakObject(Bucket, RiakSearchKey2, RiakSearchDoc2, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "name").Search(Token.StartsWith("Al")).Build()
            };

            var result = Client.Search(req);
            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(2u);
            result.Value.Documents.Count.ShouldEqual(2);
        }
Exemplo n.º 16
0
        public void SearchingWithSimpleFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "name").Search("Alyssa").Build()
            };

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.ShouldEqual("a.hacker");
        }
        public void UsingFluentQueryProducesSameQueryAsString()
        {
            string index     = "index";
            string field     = "data_s";
            string search    = "frazzle";
            string solrQuery = string.Format("{0}:{1}", field, search);

            var fluentSearch = new RiakFluentSearch(index, field).Search(search).Build();
            var s1           = new RiakSearchRequest {
                Query = fluentSearch
            };
            var s2 = new RiakSearchRequest(index, solrQuery);

            Assert.AreEqual(s1, s2);
        }
        public void UsingFluentQueryWithFilterProducesSameQueryAsString()
        {
            string index = "index";
            string field = "data_s";
            string search = "frazzle";
            string solrQuery = string.Format("{0}:{1}", field, search);
            string solrFilter = string.Format("{0}:[10 TO 20]", field);

            var fluentSearch = new RiakFluentSearch(index, field).Search(search).Build();
            var fluentFilter = new RiakFluentSearch(index, field).Between("10", "20", true).Build();
            var s1 = new RiakSearchRequest { Query = fluentSearch, Filter = fluentFilter };
            var s2 = new RiakSearchRequest(index, solrQuery, solrFilter);

            Assert.AreEqual(s1, s2);
        }
Exemplo n.º 19
0
        public Task <RiakResult <RiakSearchResult> > Search(RiakSearchRequest search)
        {
            var request = search.ToMessage();

            return(UseConnection(conn => conn.PbcWriteRead <RpbSearchQueryReq, RpbSearchQueryResp>(request))
                   .ContinueWith((Task <RiakResult <RpbSearchQueryResp> > finishedTask) => {
                var result = finishedTask.Result;
                if (result.IsSuccess)
                {
                    return RiakResult <RiakSearchResult> .Success(new RiakSearchResult(result.Value));
                }

                return RiakResult <RiakSearchResult> .Error(result.ResultCode, result.ErrorMessage, result.NodeOffline);
            }));
        }
Exemplo n.º 20
0
        public void SearchingWithWildcardFluentQueryWorksCorrectly()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));
            Client.Put(new RiakObject(Bucket, RiakSearchKey2, RiakSearchDoc2, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "name").Search(Token.StartsWith("Al")).Build()
            };

            var result = Client.Search(req);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(2u);
            result.Value.Documents.Count.ShouldEqual(2);
        }
        public void SearchingWithSimpleFluentQueryWorksCorrectly()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "name").Search("Alyssa").Build()
            };

            var result = Client.Search(req);
            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.Value.ShouldEqual("a.hacker");
        }
Exemplo n.º 22
0
        public void QueryBlogPostsKeywords()
        {
            StoreBlogPost();

            WaitForSearch();

            var searchRequest = new RiakSearchRequest("blog_posts", "keywords_set:funny");
            var rslt          = client.Search(searchRequest);

            CheckResult(rslt);
            foreach (var doc in rslt.Value.Documents)
            {
                Console.WriteLine("Key: {0}, Content:\n{1}",
                                  doc.Key, GetFields(doc));
            }
        }
Exemplo n.º 23
0
        public async Task <Either <RiakException, RiakSearchResult> > Search(RiakSearchRequest search)
        {
            var request = search.ToMessage();

            try
            {
                var response = await _connection.PbcWriteRead <RpbSearchQueryReq, RpbSearchQueryResp>(_endPoint, request)
                               .ConfigureAwait(false);

                return(new Either <RiakException, RiakSearchResult>(new RiakSearchResult(response)));
            }
            catch (RiakException riakException)
            {
                return(new Either <RiakException, RiakSearchResult>(riakException));
            }
        }
        public void UsingFluentQueryWithFilterProducesSameQueryAsString()
        {
            string index      = "index";
            string field      = "data_s";
            string search     = "frazzle";
            string solrQuery  = string.Format("{0}:{1}", field, search);
            string solrFilter = string.Format("{0}:[10 TO 20]", field);

            var fluentSearch = new RiakFluentSearch(index, field).Search(search).Build();
            var fluentFilter = new RiakFluentSearch(index, field).Between("10", "20", true).Build();
            var s1           = new RiakSearchRequest {
                Query = fluentSearch, Filter = fluentFilter
            };
            var s2 = new RiakSearchRequest(index, solrQuery, solrFilter);

            Assert.AreEqual(s1, s2);
        }
Exemplo n.º 25
0
        public void SearchingWithSimpleFluentQueryWorksCorrectly()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "name").Search("Alyssa").Build()
            };

            var result = Client.Search(req);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.Value.ShouldEqual("a.hacker");
        }
Exemplo n.º 26
0
        public void SearchingWithMoreComplexFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "bio")
            };

            req.Query.Search("awesome")
            .And("an")
            .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.ShouldEqual("a.public");
        }
Exemplo n.º 27
0
        private void DoSearch(string index, string solrQuery)
        {
            var search = new RiakSearchRequest(index, solrQuery);
            var rslt   = client.Search(search);

            CheckResult(rslt);

            RiakSearchResult searchResult = rslt.Value;

            Console.WriteLine("Num found: {0}", searchResult.NumFound);
            Assert.GreaterOrEqual(searchResult.Documents.Count, 1);

            Console.WriteLine("Search results for '{0}':", solrQuery);
            foreach (var doc in searchResult.Documents)
            {
                Console.WriteLine("\tKey: {0} Bucket Type: {1} Bucket: {2}",
                                  doc.Key, doc.BucketType, doc.Bucket);
            }
        }
Exemplo n.º 28
0
        public void SearchingWithSimpleFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch(Index, "name_s")
                        .Search(_randomId + "Alyssa P. Hacker")
                        .Build()
            };

            var searchResult = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            searchResult.IsSuccess.ShouldBeTrue(searchResult.ErrorMessage);
            searchResult.Value.NumFound.ShouldEqual(1u);
            searchResult.Value.Documents.Count.ShouldEqual(1);

            // [ _yz_rt, _yz_rb, _yz_rk, score, _yz_id ]
            // [ name_s, age_i, leader_b, bio_tsd, favorites.book_tsd , favorites.album_tsd ]
            searchResult.Value.Documents[0].Fields.Count.ShouldEqual(11);
            searchResult.Value.Documents[0].RiakObjectId.ShouldEqual(_alyssaRiakId);
        }
Exemplo n.º 29
0
        public void SearchingWithMoreComplexFluentQueryWorksCorrectly()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));
            Client.Put(new RiakObject(Bucket, RiakSearchKey2, RiakSearchDoc2, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "bio")
            };

            req.Query.Search("awesome")
            .And("an")
            .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.Search(req);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.Value.ShouldEqual("a.public");
        }
Exemplo n.º 30
0
        public void QueryWithPagination()
        {
            ids = PutAnimals();

            int rowsPerPage = 2;
            int page        = 2;
            int start       = rowsPerPage * (page - 1);

            var search = new RiakSearchRequest
            {
                Start = start,
                Rows  = rowsPerPage,
                Query = new RiakFluentSearch("famous", "*")
                        .Search("*")
                        .Build(),
            };

            var rslt = client.Search(search);

            CheckResult(rslt);
            Assert.AreEqual(rowsPerPage, rslt.Value.Documents.Count);
        }
Exemplo n.º 31
0
        public void SimpleQuery()
        {
            ids = PutAnimals();

            var search = new RiakSearchRequest("famous", "name_s:Lion*");
            var rslt = client.Search(search);
            CheckResult(rslt);

            RiakSearchResult searchResult = rslt.Value;

            foreach (RiakSearchResultDocument doc in searchResult.Documents)
            {
                var args = new[] {
                    doc.BucketType,
                    doc.Bucket,
                    doc.Key,
                    string.Join(", ", doc.Fields.Select(f => f.Value).ToArray())
                };
                Console.WriteLine(
                    "BucketType: {0} Bucket: {1} Key: {2} Values: {3}",
                    args);
            }
        }
Exemplo n.º 32
0
        public void SimpleQuery()
        {
            ids = PutAnimals();

            var search = new RiakSearchRequest("famous", "name_s:Lion*");
            var rslt   = client.Search(search);

            CheckResult(rslt);

            RiakSearchResult searchResult = rslt.Value;

            foreach (RiakSearchResultDocument doc in searchResult.Documents)
            {
                var args = new[] {
                    doc.BucketType,
                    doc.Bucket,
                    doc.Key,
                    string.Join(", ", doc.Fields.Select(f => f.Value).ToArray())
                };
                Console.WriteLine(
                    "BucketType: {0} Bucket: {1} Key: {2} Values: {3}",
                    args);
            }
        }
Exemplo n.º 33
0
        public void QueryWithOperations()
        {
            var search = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("famous", "leader_b")
                    .Search("true").AndBetween("age_i", "30", "*")
                    .Build()
            };

            var rslt = client.Search(search);
            CheckResult(rslt);
        }
Exemplo n.º 34
0
 public Task <RiakResult <RiakSearchResult> > Search(RiakSearchRequest search)
 {
     return(Task.Factory.StartNew(() => _client.Search(search)));
 }
        public void SearchingWithMoreComplexFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "bio")
            };

            req.Query.Search("awesome")
                .And("an")
                .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);
            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.ShouldEqual("a.public");
        }
        public void SettingFieldListReturnsOnlyFieldsSpecified()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch(Index, "name_s"),
                PreSort = PreSort.Key,
                DefaultOperation = DefaultOperation.Or,
                ReturnFields = new List<string>
                {
                    RiakConstants.SearchFieldKeys.Id,
                    "bio_tsd",
                    "favorites.album_tsd"
                }
            };


            // name_s:{integer}Al* AND bio_tsd:awesome AND bio_tsd:an AND (bio_tsd:mathematician OR favorites.album_tsd:Fame)
            req.Query.Search(Token.StartsWith(_randomId + "Al"))
                .And("bio_tsd", "awesome")
                .And("an")
                .And("mathematician", s => s.Or("favorites.album_tsd", "Fame"));


            Console.WriteLine(req.Query.ToString());

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);
            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(3);
            result.Value.Documents[0].Id.ShouldNotBeNull();
        }
        public void SearchingWithMoreComplexFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch(Index, "name_s")
            };

            // name_s:{integer}Al* AND bio_tsd:awesome AND bio_tsd:an AND (bio_tsd:mathematician OR favorites.album_tsd:Fame)
            req.Query.Search(Token.StartsWith(_randomId + "Al"))
                .And("bio_tsd", "awesome")
                .And("an")
                .And("mathematician", s => s.Or("favorites.album_tsd", "Fame"));

            Console.WriteLine(req.Query.ToString());

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);

            // [ _yz_rt, _yz_rb, _yz_rk, score, _yz_id ]
            // [ name_s, age_i, leader_b, bio_tsd, favorites.book_tsd , favorites.album_tsd ]
            result.Value.Documents[0].Fields.Count.ShouldEqual(10);
            var id = result.Value.Documents[0].Id;
            id.Contains("a.public").ShouldBeTrue(string.Format("{0} does not contain {1}", id, "a.public"));
        }
        public void SearchingWithWildcardFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch(Index, "name_s").Search(Token.StartsWith(_randomId + "Al")).Build()
            };

            var searchResult = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.TwoMatchesFound);
            searchResult.IsSuccess.ShouldBeTrue(searchResult.ErrorMessage);
            searchResult.Value.NumFound.ShouldEqual(2u);
            searchResult.Value.Documents.Count.ShouldEqual(2);
        }
        private void DoSearch(string index, string solrQuery)
        {
            var search = new RiakSearchRequest(index, solrQuery);
            var rslt = client.Search(search);
            CheckResult(rslt);

            RiakSearchResult searchResult = rslt.Value;
            Console.WriteLine("Num found: {0}", searchResult.NumFound);
            Assert.GreaterOrEqual(searchResult.Documents.Count, 1);

            Console.WriteLine("Search results for '{0}':", solrQuery);
            foreach (var doc in searchResult.Documents)
            {
                Console.WriteLine("\tKey: {0} Bucket Type: {1} Bucket: {2}",
                    doc.Key, doc.BucketType, doc.Bucket);
            }
        }
        public void SettingFieldListReturnsOnlyFieldsSpecified()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));
            Client.Put(new RiakObject(Bucket, RiakSearchKey2, RiakSearchDoc2, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "bio"),
                PreSort = PreSort.Key,
                DefaultOperation = DefaultOperation.Or,
                ReturnFields = new List<string>
                {
                    "bio", "favorites_album"
                }
            };

            req.Query.Search("awesome")
                .And("an")
                .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.Search(req);
            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            // "id" field is always returned
            result.Value.Documents[0].Fields.Count.ShouldEqual(3);
            result.Value.Documents[0].Id.ShouldNotBeNull();
        }
        public static Func <RiakResult <RiakSearchResult> > RunSolrQuery(this IRiakClient client, RiakSearchRequest req)
        {
            Func <RiakResult <RiakSearchResult> > runSolrQuery =
                () => client.Search(req);

            return(runSolrQuery);
        }
Exemplo n.º 42
0
 public RiakResult <RiakSearchResult> Search(RiakSearchRequest search)
 {
     return(WaitFor(_client.Search(search)));
 }
Exemplo n.º 43
0
        public void SimpleQueryWithGet()
        {
            ids = PutAnimals();

            var search = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("famous", "name_s")
                    .Search("Lion*")
                    .Build()
            };

            var searchRslt = client.Search(search);
            CheckResult(searchRslt);

            RiakSearchResult searchResult = searchRslt.Value;

            RiakSearchResultDocument doc = searchResult.Documents.First();
            var id = new RiakObjectId(doc.BucketType, doc.Bucket, doc.Key);
            var rslt = client.Get(id);
            CheckResult(rslt);

            RiakObject obj = rslt.Value;
            Console.WriteLine(Encoding.UTF8.GetString(obj.Value));
        }
 public static Func<RiakResult<RiakSearchResult>> RunSolrQuery(this IRiakClient client, RiakSearchRequest req)
 {
     Func<RiakResult<RiakSearchResult>> runSolrQuery =
         () => client.Search(req);
     return runSolrQuery;
 }
Exemplo n.º 45
0
        public void QueryWithPagination()
        {
            ids = PutAnimals();

            int rowsPerPage = 2;
            int page = 2;
            int start = rowsPerPage * (page - 1);

            var search = new RiakSearchRequest
            {
                Start = start,
                Rows = rowsPerPage,
                Query = new RiakFluentSearch("famous", "*")
                    .Search("*")
                    .Build(),
            };

            var rslt = client.Search(search);
            CheckResult(rslt);
            Assert.AreEqual(rowsPerPage, rslt.Value.Documents.Count);
        }
Exemplo n.º 46
0
        public void QueryBlogPostsKeywords()
        {
            StoreBlogPost();

            WaitForSearch();

            var searchRequest = new RiakSearchRequest("blog_posts", "keywords_set:funny");
            var rslt = client.Search(searchRequest);
            CheckResult(rslt);
            foreach (var doc in rslt.Value.Documents)
            {
                Console.WriteLine("Key: {0}, Content:\n{1}",
                    doc.Key, GetFields(doc));
            }
        }
Exemplo n.º 47
0
        public void RangeQuery()
        {
            ids = PutAnimals();

            var search = new RiakSearchRequest("famous", "age_i:[30 TO *]");

            /*
             * Fluent interface:
             * 
            var search = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("famous", "age_i")
                    .Between("30", "*")
                    .Build()
            };
             */

            var rslt = client.Search(search);
            CheckResult(rslt);

            RiakSearchResult searchResult = rslt.Value;

            foreach (RiakSearchResultDocument doc in searchResult.Documents)
            {
                var args = new[] {
                    doc.BucketType,
                    doc.Bucket,
                    doc.Key,
                    string.Join(", ", doc.Fields.Select(f => f.Value).ToArray())
                };
                Console.WriteLine("BucketType: {0} Bucket: {1} Key: {2} Values: {3}", args);
            }
        }
        public void SearchingWithMoreComplexFluentQueryWorksCorrectly()
        {
            Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson));
            Client.Put(new RiakObject(Bucket, RiakSearchKey2, RiakSearchDoc2, RiakConstants.ContentTypes.ApplicationJson));

            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "bio")
            };

            req.Query.Search("awesome")
                .And("an")
                .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.Search(req);
            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            result.Value.Documents[0].Fields.Count.ShouldEqual(5);
            result.Value.Documents[0].Id.Value.ShouldEqual("a.public");
        }
        public void SettingFieldListReturnsOnlyFieldsSpecified()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch("riak_search_bucket", "bio"),
                PreSort = PreSort.Key,
                DefaultOperation = DefaultOperation.Or,
                ReturnFields = new List<string>
                {
                    "bio", "favorites_album"
                }
            };

            req.Query.Search("awesome")
                .And("an")
                .And("mathematician", t => t.Or("favorites_ablum", "Fame"));

            var result = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            result.IsSuccess.ShouldBeTrue(result.ErrorMessage);
            result.Value.NumFound.ShouldEqual(1u);
            result.Value.Documents.Count.ShouldEqual(1);
            // "id" field is always returned
            result.Value.Documents[0].Fields.Count.ShouldEqual(3);
            result.Value.Documents[0].Id.ShouldNotBeNull();
        }
        public void SearchingWithSimpleFluentQueryWorksCorrectly()
        {
            var req = new RiakSearchRequest
            {
                Query = new RiakFluentSearch(Index, "name_s")
                    .Search(_randomId + "Alyssa P. Hacker")
                    .Build()
            };

            var searchResult = Client.RunSolrQuery(req).WaitUntil(SearchTestHelpers.AnyMatchIsFound);

            searchResult.IsSuccess.ShouldBeTrue(searchResult.ErrorMessage);
            searchResult.Value.NumFound.ShouldEqual(1u);
            searchResult.Value.Documents.Count.ShouldEqual(1);

            // [ _yz_rt, _yz_rb, _yz_rk, score, _yz_id ]
            // [ name_s, age_i, leader_b, bio_tsd, favorites.book_tsd , favorites.album_tsd ]
            searchResult.Value.Documents[0].Fields.Count.ShouldEqual(11);
            searchResult.Value.Documents[0].RiakObjectId.ShouldEqual(_alyssaRiakId);
        }
Exemplo n.º 51
0
        /// <summary>
        /// Perform a Riak Search query
        /// </summary>
        /// <param name="search">The <see cref="RiakSearchRequest"/></param>
        /// <returns>A <see cref="RiakResult"/> of <see cref="RiakSearchResult"/></returns>
        public RiakSearchResult Search(RiakSearchRequest search)
        {
            var result = Async.Search(search).ConfigureAwait(false).GetAwaiter().GetResult();

            return(result.IsLeft ? null : result.Right);
        }