Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
	    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"]);
	        }
	    }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
	    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]);

		
	    }