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 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 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); }
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(); }
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); }
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 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 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); }
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); }
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); }
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); }
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); })); }
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"); }
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)); } }
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 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"); }
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 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); }
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 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); }
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); } }
public Task <RiakResult <RiakSearchResult> > Search(RiakSearchRequest search) { return(Task.Factory.StartNew(() => _client.Search(search))); }
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 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); }
public RiakResult <RiakSearchResult> Search(RiakSearchRequest search) { return(WaitFor(_client.Search(search))); }
public static Func<RiakResult<RiakSearchResult>> RunSolrQuery(this IRiakClient client, RiakSearchRequest req) { Func<RiakResult<RiakSearchResult>> runSolrQuery = () => client.Search(req); return runSolrQuery; }
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 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(); }
/// <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); }