public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { BoolQuery term = (BoolQuery)value; if (term != null) { writer.WriteStartObject(); writer.WritePropertyName("bool"); writer.WriteStartObject(); bool pre = false; if (term.MustQueries != null && term.MustQueries.Count > 0) { writer.WritePropertyName("must"); writer.WriteStartArray(); foreach (var VARIABLE in term.MustQueries) { serializer.Serialize(writer, VARIABLE); } writer.WriteEndArray(); } if (term.MustNotQueries != null && term.MustNotQueries.Count > 0) { writer.WritePropertyName("must_not"); writer.WriteStartArray(); foreach (var VARIABLE in term.MustNotQueries) { serializer.Serialize(writer, VARIABLE); } writer.WriteEndArray(); } if (term.ShouldQueries != null && term.ShouldQueries.Count > 0) { writer.WritePropertyName("should"); writer.WriteStartArray(); foreach (var shouldQuery in term.ShouldQueries) { serializer.Serialize(writer, shouldQuery); } writer.WriteEndArray(); } if (Math.Abs(term.Boost - 1.0) > 0) { writer.WritePropertyName("boost"); writer.WriteValue(term.Boost); } if (term.DisableCoord) { writer.WritePropertyName("disable_coord"); writer.WriteValue(term.DisableCoord); } if (term.MinimumNumberShouldMatch != 1) { writer.WritePropertyName("minimum_number_should_match"); writer.WriteValue(term.MinimumNumberShouldMatch); } writer.WriteEndObject(); writer.WriteEndObject(); } }
public void TestFilterdQuery() { var termQuery = new TermQuery("type", "common"); var termFilter = new TermFilter("age", "24"); var filteredQuery = new FilteredQuery(termQuery,termFilter); var result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); var wildQuery = new WildcardQuery("name", "张三*"); termFilter = new TermFilter("age", "23"); filteredQuery = new FilteredQuery(wildQuery, termFilter); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三丰",result2.GetHits().Hits[0].Source["name"]); var boolQuery = new BoolQuery(); boolQuery.Must(new TermQuery("type", "common")); boolQuery.Must(new WildcardQuery("name", "张三*")); boolQuery.Should(new TermQuery("age", 24)); filteredQuery=new FilteredQuery(boolQuery,new TermFilter("age","23")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三丰", result2.GetHits().Hits[0].Source["name"]); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("age", "24")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三", result2.GetHits().Hits[0].Source["name"]); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(2, result2.GetTotalCount()); Assert.AreEqual(2, result2.GetHits().Hits.Count); //test should boolQuery = new BoolQuery(); boolQuery.Must(new TermQuery("type", "common")); boolQuery.Must(new WildcardQuery("name", "张*")); boolQuery.Should(new TermQuery("age", 24)); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(3, result2.GetTotalCount()); Assert.AreEqual(3, result2.GetHits().Hits.Count); boolQuery = new BoolQuery(); boolQuery.Must(new TermQuery("type", "common")); boolQuery.Must(new WildcardQuery("name", "张*")); boolQuery.Should(new TermQuery("age", 24)); boolQuery.Should(new TermQuery("age", 28)); boolQuery.Should(new TermQuery("age", 22)); //must+should ->[should] make nonsense filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(3, result2.GetTotalCount()); Assert.AreEqual(3, result2.GetHits().Hits.Count); boolQuery = new BoolQuery(); boolQuery.Should(new TermQuery("age", 24)); boolQuery.Should(new TermQuery("age", 28)); boolQuery.Should(new TermQuery("age", 22)); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三", result2.GetHits().Hits[0].Source["name"]); boolQuery.Should(new TermQuery("age", 25)); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(2, result2.GetTotalCount()); Assert.AreEqual(2, result2.GetHits().Hits.Count); }
public void TestBoostingQuery() { var query = new BoostingQuery(); query.SetPositive("name","张"); query.SetNegative("name","张三"); query.SetNegativeBoost(0.2); var query2 = new BoolQuery(); query2.Must(query); query2.Must(new TermsQuery("name", "张三")); var result = client.Search(index, "type" , query2, 0, 5); foreach (var VARIABLE in result.GetHits().Hits) { Console.WriteLine(VARIABLE.Source["name"]); } }
public void TestBoolQueryWithTwoCondition() { var query = new BoolQuery(); query.Must(new TermQuery("type", "common")); query.Must(new TermQuery("age", "23")); query.SetBoost(5); var result = client.Search(index, "type" , query, 0, 5); Assert.AreEqual(1, result.GetTotalCount()); Assert.AreEqual(1, result.GetHits().Hits.Count); query = new BoolQuery(); query.Must(new TermQuery("type", "common")); query.MustNot(new TermQuery("age", "23")); query.SetBoost(5); result = client.Search(index, "type" , query, 0, 5); Assert.AreEqual(2, result.GetTotalCount()); Assert.AreEqual(2, result.GetHits().Hits.Count); }
public void TestBoolQuery() { var query = new BoolQuery(); query.Must(new TermQuery("type", "common")); query.SetBoost(5); var result = client.Search(index, "type" , query, 0, 5); foreach (var VARIABLE in result.GetHits().Hits) { Console.WriteLine(VARIABLE.Source["name"]); } Assert.AreEqual(3, result.GetTotalCount()); Assert.AreEqual(3, result.GetHits().Hits.Count); query.Must(new WildcardQuery("name", "张三*")); // query.SetMinimumNumberShouldMatch(1); result = client.Search(index, "type" , query, 0, 5); foreach (var VARIABLE in result.GetHits().Hits) { Console.WriteLine(VARIABLE.Source["name"]); } Assert.AreEqual(2, result.GetTotalCount()); Assert.AreEqual(2, result.GetHits().Hits.Count); query.MustNot(new TermQuery("age", 24)); result = client.Search(index, "type" , query, 0, 5); foreach (var VARIABLE in result.GetHits().Hits) { Console.WriteLine(VARIABLE.Source["name"]); } Assert.AreEqual(1, result.GetTotalCount()); Assert.AreEqual(1, result.GetHits().Hits.Count); Assert.AreEqual("addition_key4", result.GetHitIds()[0]); }