public RangeTerm(RiakFluentSearch search, string field, Token from, Token to, bool inclusive) : base(search, field) { _from = from; _to = to; _inclusive = inclusive; }
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); }
/// <summary> /// Initializes a new instance of the <see cref="RangeTerm"/> class. /// </summary> /// <param name="search">The fluent search to add this term to.</param> /// <param name="field">The field to search.</param> /// <param name="from">The lower bound of values to search the <paramref name="field"/> for.</param> /// <param name="to">The upper bound of values to search the <paramref name="field"/> for.</param> /// <param name="inclusive">The option to include the bounds in the range or not.</param> internal RangeTerm(RiakFluentSearch search, string field, Token from, Token to, bool inclusive) : base(search, field) { this.from = from; this.to = to; this.inclusive = inclusive; }
private BinaryTerm(RiakFluentSearch search, string field, Op op, Term left) : base(search, field) { _op = op; _left = left; left.Owner = this; }
private BinaryTerm(RiakFluentSearch search, string field, Op op, Term left) : base(search, field) { this.op = op; this.left = left; left.Owner = this; }
public void SimpleIndexFieldUnaryTermSerializesCorrectly() { var s = new RiakFluentSearch("bucket", "field") .Search("foo") .Build(); var q = s.ToString(); Assert.AreEqual("field:foo", q); }
public void SimpleRangeTermSerializesCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Between("10", "20", false) .Build(); var q = s.ToString(); Assert.AreEqual("key:{10 TO 20}", q); }
public void SimpleUnaryTermWithProximitySerializesCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Proximity(5, "foo", "bar", "baz") .Build(); var q = s.ToString(); Assert.AreEqual(@"key:""foo bar baz""~5", q); }
public void InitialGroupedTermsSerializeCorrectly2() { var s = new RiakFluentSearch("bucket", "key") .Group(Token.Is("foo"), t => t.Or("bar").And("baz", x => x.And("schmoopy"))) .Or("bar", t => t.And("slop")) .Build(); var q = s.ToString(); Assert.AreEqual("key:(key:foo OR key:bar AND (key:baz AND key:schmoopy)) OR (key:bar AND key:slop)", q); }
public void SimpleUnaryTermWithBoostSerializesCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Search("foo") .Boost(5) .Build(); var q = s.ToString(); Assert.AreEqual("key:foo^5", q); }
public void SimpleAndTermSerializesCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Search("foo") .And("bar") .Build(); var q = s.ToString(); Assert.AreEqual("key:foo AND key:bar", q); }
public void SimpleOrAndTermWithBoostSerializesCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Search("foo") .Or("bar").Boost(3) .And("baz").Boost(5) .Build(); var q = s.ToString(); Assert.AreEqual("key:foo OR key:bar^3 AND key:baz^5", q); }
public void SearchingViaFluentSearchObjectWorks() { var search = new RiakFluentSearch(Index, "name_s").Search(Token.StartsWith(_randomId + "Al")).Build(); var mr = new RiakMapReduceQuery().Inputs(new RiakSearchInput(search)); var result = Client.RunMapReduceQuery(mr).WaitUntil(MapReduceTestHelpers.OnePhaseWithTwoResultsFound); result.IsSuccess.ShouldBeTrue(result.ErrorMessage); AssertThatResultContainsAllKeys(result); }
public void ValueTextEscapedCorrectly() { var search = new RiakFluentSearch("bucket", "key") .Search(@"This is\ a ""Test"" to make 'sure' it (the text) is [characterised] correctly (master:slave) + includes - this url: http://foo.com/bar?baz=quux") .Build(); var query = search.ToString(); var expected = @"key:This\ is\\\ a\ \""Test\""\ to\ make\ \'sure\'\ it\ \(the\ text\)\ is\ \[characterised\]\ correctly\ \(master\:slave\)\ \+\ includes\ \-\ this\ url\:\ http\:\/\/foo.com\/bar\?baz=quux"; Assert.AreEqual(expected, query); }
public void SearchingViaFluentSearchObjectWorks() { var search = new RiakFluentSearch(Bucket, "name").Search(Token.StartsWith("Al")).Build(); #pragma warning disable 612, 618 var mr = new RiakMapReduceQuery().Inputs(new RiakBucketSearchInput(search)); #pragma warning restore 612, 618 var result = Client.MapReduce(mr); result.IsSuccess.ShouldBeTrue(result.ErrorMessage); CheckThatResultContainAllKeys(result); }
public void GroupedNotTermsSerializeCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Search("foo") .Or("bar").Not() .And("baz", t => t.Or("quux")).Not() .Or("baz", t => t.And("schmoopy") .Boost(6) .And("dooby", x => x.Or("fooby").Not())) .Build(); var q = s.ToString(); Assert.AreEqual("key:foo OR NOT key:bar AND NOT (key:baz OR key:quux) OR (key:baz AND key:schmoopy^6 AND (key:dooby OR NOT key:fooby))", q); }
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 ComplicatedTermsSerializeCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Search("foo") .Or("bar").Not() .AndBetween("10", "20") .And("baz", t => t.Or("quux").OrBetween("la", "da", false)).Not() .AndProximity(3, "testing", "these words") .Or("baz", t => t.And("schmoopy for president+") .Boost(6) .And(Token.StartsWith("dooby"), x => x.Or("fooby").Not())) .Build(); var q = s.ToString(); Assert.AreEqual(@"key:foo OR NOT key:bar AND key:[10 TO 20] AND NOT (key:baz OR key:quux OR key:{la TO da}) AND key:""testing these\ words""~3 OR (key:baz AND key:schmoopy\ for\ president\+^6 AND (key:dooby* OR NOT key:fooby))", q); }
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 void ComplicatedTermsWithExtraFieldsSerializeCorrectly() { var s = new RiakFluentSearch("bucket", "key") .Search("foo") .Or("bar").Not() .AndBetween("10", "20", true) .Or("otherkey", "baz", t => t.And("hash", Token.StartsWith("schmoopy for president+")) .Boost(6) .And("bash", "dooby", x => x.Or("dash", "fooby").Not()) .Or("smelly")) .And("baz", t => t.Or("zoom", "quux").OrBetween("la", "da", false)).Not() .OrProximity("lala", 10, "wouldn't", "haven't").Not() .Build(); var q = s.ToString(); Assert.AreEqual(@"key:foo OR NOT key:bar AND key:[10 TO 20] OR (otherkey:baz AND hash:schmoopy\ for\ president\+*^6 AND (bash:dooby OR NOT dash:fooby) OR bash:smelly) AND NOT (otherkey:baz OR zoom:quux OR zoom:{la TO da}) OR NOT lala:""wouldn\'t haven\'t""~10", q); }
public void SearchingViaFluentSearchObjectWorks() { Client.Put(new RiakObject(Bucket, RiakSearchKey, RiakSearchDoc, RiakConstants.ContentTypes.ApplicationJson)); Client.Put(new RiakObject(Bucket, RiakSearchKey2, RiakSearchDoc2, RiakConstants.ContentTypes.ApplicationJson)); var search = new RiakFluentSearch(Bucket, "name").Search(Token.StartsWith("A1")).Build(); var mr = new RiakMapReduceQuery() .Inputs(new RiakBucketSearchInput(search)); var result = Client.MapReduce(mr); result.IsSuccess.ShouldBeTrue(result.ErrorMessage); var mrResult = result.Value; mrResult.PhaseResults.Count().ShouldEqual(1); mrResult.PhaseResults.ElementAt(0).Values.ShouldNotBeNull(); // TODO Add data introspection to test - need to verify the results, after all. }
public void SearchingComplexQueryWorks() { var search = 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) search.Search(Token.StartsWith(_randomId + "Al")) .And("bio_tsd", "awesome") .And("an") .And("mathematician", s => s.Or("favorites.album_tsd", "Fame")); var mr = new RiakMapReduceQuery().Inputs(new RiakSearchInput(search)); var result = Client.RunMapReduceQuery(mr).WaitUntil(MapReduceTestHelpers.OnePhaseWithOneResultFound); result.IsSuccess.ShouldBeTrue(result.ErrorMessage); var singleResult = result.Value.PhaseResults.First().Values[0].FromRiakString(); var failureMessage = string.Format("Results did not contain \"{0}\". \r\nResult was:\"{1}\"", PublicKey, singleResult); singleResult.Contains(PublicKey).ShouldBeTrue(failureMessage); }
/// <summary> /// Initializes a new instance of the <see cref="UnaryTerm"/> class. /// </summary> /// <param name="search">The fluent search to add this term to.</param> /// <param name="field">The field to search.</param> /// <param name="value">The <see cref="Token"/> to search the <paramref name="field"/> for.</param> internal UnaryTerm(RiakFluentSearch search, string field, Token value) : base(search, field) { this.value = value; }
internal BinaryTerm(RiakFluentSearch search, string field, Op op, Term left, string value) : this(search, field, op, left, Token.Is(value)) { }
/// <summary> /// Initializes a new instance of the <see cref="RiakSearchInput"/> class. /// </summary> /// <param name="query">The <see cref="RiakFluentSearch"/> to run, whose results will be used as inputs for the mapreduce job. </param> public RiakSearchInput(RiakFluentSearch query) : this(query.Index, query.ToString()) { }
/// <summary> /// Initializes a new instance of the <see cref="GroupTerm"/> class. /// </summary> /// <param name="search">The fluent search to add this term to.</param> /// <param name="field">The field to search.</param> /// <param name="term">The <see cref="Term"/> group to search the <paramref name="field"/> for.</param> internal GroupTerm(RiakFluentSearch search, string field, Term term) : base(search, field) { this.term = term; }
/// <summary> /// Initializes a new instance of the <see cref="UnaryTerm"/> class. /// </summary> /// <param name="search">The fluent search to add this term to.</param> /// <param name="field">The field to search.</param> /// <param name="value">The value to search the <paramref name="field"/> for.</param> internal UnaryTerm(RiakFluentSearch search, string field, string value) : this(search, field, Token.Is(value)) { }
public UnaryTerm(RiakFluentSearch search, string field, Token value) : base(search, field) { _value = value; }
internal BinaryTerm(RiakFluentSearch search, string field, Op op, Term left, Term right) : this(search, field, op, left) { this.right = right; }
public RiakBucketSearchInput Filter(RiakFluentSearch filter) { return(Filter(filter.ToString())); }
internal BinaryTerm(RiakFluentSearch search, string field, Op op, Term left, Token value) : this(search, field, op, left) { _value = value; }
public GroupTerm(RiakFluentSearch search, string field, Term term) : base(search, field) { _term = term; }
/// <summary> /// Filter the main query with a secondary <see cref="RiakFluentSearch"/> query. /// </summary> /// <param name="filter">The secondary filter query.</param> /// <returns>A reference to this updated instance, for fluent chaining.</returns> public RiakBucketSearchInput Filter(RiakFluentSearch filter) { return Filter(filter.ToString()); }
/// <summary> /// Initializes a new instance of the <see cref="RiakBucketSearchInput"/> class. /// </summary> /// <param name="query">The <see cref="RiakFluentSearch"/> to run, whose results will be used as inputs for the mapreduce job. </param> public RiakBucketSearchInput(RiakFluentSearch query) : this(query.Index, query.ToString()) { }
internal BinaryTerm(RiakFluentSearch search, string field, Op op, Term left, Term right) : this(search, field, op, left) { _right = right; }
public RiakBucketSearchInput(RiakFluentSearch query) : this(query.Bucket, query.ToString()) { }