public void Export_ReturnsValidJson()
        {
            var query = new DisjunctionQuery(
                new TermQuery("hotel").Field("type")
                );

            var result = query.Export().ToString(Formatting.None);

            var expected = JsonConvert.SerializeObject(new
            {
                query = new
                {
                    boost     = 0.0,
                    min       = 1,
                    disjuncts = new[]
                    {
                        new
                        {
                            query = new
                            {
                                term          = "hotel",
                                boost         = 0.0,
                                field         = "type",
                                prefix_length = 0,
                                fuzziness     = 0
                            }
                        }
                    }
                }
            }, Formatting.None);

            Assert.AreEqual(expected, result);
        }
        public void Export_ReturnsValidJson()
        {
            var query = new DisjunctionQuery(
                new TermQuery("hotel").Field("type")
            );

            var result = query.Export().ToString(Formatting.None);

            var expected = JsonConvert.SerializeObject(new
            {
                query = new
                {
                    boost = 0.0,
                    min = 1,
                    disjuncts = new[]
                    {
                        new
                        {
                            query = new
                            {
                                term = "hotel",
                                boost = 0.0,
                                field = "type",
                                prefix_length = 0,
                                fuzziness = 0
                            }
                        }
                    }
                }
            }, Formatting.None);

            Assert.AreEqual(expected, result);
        }
Example #3
0
        public async Task <List <User> > FtsListActiveUsersAsync(string firstName, bool enabled, string countryCode, int limit, int skip)
        {
            // Allows a match with a Levenshtein (Edit) Distance of 1.
            var firstNameFuzzy = new MatchQuery(firstName).Fuzziness(1).Field("firstName");

            // This is the exact match for the term.
            var firstNameSimple = new MatchQuery(firstName).Field("firstName");

            //Disjunction queries are similar to "OR" operators in SQL
            var nameQuery = new DisjunctionQuery(firstNameSimple, firstNameFuzzy);

            var isEnabled     = new BooleanFieldQuery(enabled).Field("enabled");
            var countryFilter = new MatchQuery(countryCode).Field("countryCode");

            // Conjunction queries are similar to "AND" operators in SQL
            var conj = new ConjunctionQuery(nameQuery, isEnabled, countryFilter);

            var searchQuery = new SearchQuery();

            // Indicate the fields we'd like returned in the search results.
            searchQuery.Fields("id", "tenantId", "firstName", "lastName", "userName", "enabled");

            // Assign the FTS index we've created.
            searchQuery.Index = "user_index";

            // Assign our combined query.
            searchQuery.Query = conj;
            searchQuery.Skip(skip);
            searchQuery.Limit(limit);

            var result = await _bucket.QueryAsync(searchQuery);

            var users = new List <User>();

            if (result != null && result.Success)
            {
                foreach (var hit in result.Hits)
                {
                    var user = new User
                    {
                        Id        = hit.Id,
                        TenantId  = int.Parse(hit.Fields["tenantId"].ToString()),
                        FirstName = hit.Fields["firstName"],
                        LastName  = hit.Fields["lastName"],
                        UserName  = hit.Fields["userName"],
                        Enabled   = hit.Fields["enabled"]
                    };

                    users.Add(user);
                }
            }

            return(users);
        }
Example #4
0
        // end::query[]

        // tag::FtsListActiveUsers[]
        public List <User> FtsListActiveUsers(string firstName, bool enabled, string countryCode, int limit, int skip)
        {
            // tag::fuzzy[]
            var firstNameFuzzy  = new MatchQuery(firstName).Fuzziness(1).Field("firstName");
            var firstNameSimple = new MatchQuery(firstName).Field("firstName");
            var nameQuery       = new DisjunctionQuery(firstNameSimple, firstNameFuzzy);
            // end::fuzzy[]

            // tag::filter[]
            var isEnabled     = new BooleanFieldQuery(enabled).Field("enabled");
            var countryFilter = new MatchQuery(countryCode).Field("countryCode");
            // end::filter[]

            // tag::conj[]
            var conj = new ConjunctionQuery(nameQuery, isEnabled, countryFilter);
            // end::conj[]

            // tag::result[]
            var searchQuery = new SearchQuery();

            searchQuery.Fields("id", "tenantId", "firstName", "lastName", "userName");
            searchQuery.Index = "user_index";
            searchQuery.Query = conj;
            searchQuery.Skip(skip);
            searchQuery.Limit(limit);

            var result = _bucket.Query(searchQuery);
            var users  = new List <User>();

            if (result != null && !result.Errors.Any())
            {
                foreach (var hit in result.Hits)
                {
                    var user = new User();
                    user.Id        = hit.Id;
                    user.TenantId  = int.Parse(hit.Fields["tenantId"].ToString());
                    user.FirstName = hit.Fields["firstName"];
                    user.LastName  = hit.Fields["lastName"];
                    user.UserName  = hit.Fields["userName"];
                    users.Add(user);
                }
            }

            return(users);
            // end::result[]
        }
Example #5
0
        public async Task <List <User> > FtsListActiveUsersAsync(string firstName, bool enabled, string countryCode, int limit, int skip)
        {
            var firstNameFuzzy  = new MatchQuery(firstName).Fuzziness(1).Field("firstName");
            var firstNameSimple = new MatchQuery(firstName).Field("firstName");
            var nameQuery       = new DisjunctionQuery(firstNameSimple, firstNameFuzzy);

            var isEnabled     = new BooleanFieldQuery(enabled).Field("enabled");
            var countryFilter = new MatchQuery(countryCode).Field("countryCode");

            var conj = new ConjunctionQuery(nameQuery, isEnabled, countryFilter);

            var searchQuery = new SearchQuery();

            searchQuery.Fields("id", "tenantId", "firstName", "lastName", "userName");
            searchQuery.Index = "user_index";
            searchQuery.Query = conj;
            searchQuery.Skip(skip);
            searchQuery.Limit(limit);

            var result = await _bucket.QueryAsync(searchQuery);

            var users = new List <User>();

            if (result != null && result.Success)
            {
                foreach (var hit in result.Hits)
                {
                    var user = new User
                    {
                        Id        = hit.Id,
                        TenantId  = int.Parse(hit.Fields["tenantId"].ToString()),
                        FirstName = hit.Fields["firstName"],
                        LastName  = hit.Fields["lastName"],
                        UserName  = hit.Fields["userName"]
                    };

                    users.Add(user);
                }
            }

            return(users);
        }
        public void Export_ReturnsValidJson()
        {
            var query = new DisjunctionQuery(
                new TermQuery("hotel").Field("type")
                );

            var result = query.Export().ToString(Formatting.None);

            var expected = JsonConvert.SerializeObject(new
            {
                min       = 1,
                disjuncts = new[]
                {
                    new
                    {
                        term  = "hotel",
                        field = "type"
                    }
                }
            }, Formatting.None);

            Assert.Equal(expected, result);
        }
        public void Boost_WhenBoostIsLessThanZero_ThrowsArgumentOutOfRangeException()
        {
            var query = new DisjunctionQuery();

            Assert.Throws <ArgumentOutOfRangeException>(() => query.Boost(-.1));
        }
        public void Boost_ReturnsDisjunctionQuery()
        {
            var query = new DisjunctionQuery().Boost(2.2);

            Assert.IsInstanceOf <DisjunctionQuery> (query);
        }
        public void Boost_WhenBoostIsLessThanZero_ThrowsArgumentOutOfRangeException()
        {
            var query = new DisjunctionQuery();

            Assert.Throws<ArgumentOutOfRangeException>(() => query.Boost(-.1));
        }
        public void Boost_ReturnsDisjunctionQuery()
        {
            var query = new DisjunctionQuery().Boost(2.2);

            Assert.IsInstanceOf<DisjunctionQuery> (query);
        }