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 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); }
// 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[] }
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); }