Exemplo n.º 1
0
        public void CanMixTermsWithAndWithoutFieldLabels()
        {
            // arrange
            var owners = CreateOwnersResult(new Dictionary <string, HashSet <string> >
            {
                { "dot", new HashSet <string> {
                      "microsoft"
                  } }
            });

            var queryText = "dot owner:Microsoft";
            var expected  = new FilteredQuery(
                new BooleanQuery
            {
                new BooleanClause(new BooleanQuery {
                    Clauses = { new BooleanClause(new TermQuery(new Term("Id", "dot")), Occur.SHOULD) }, Boost = 8
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    new BooleanClause(new TermQuery(new Term("ShingledId", "dot")), Occur.SHOULD)
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    new BooleanClause(new TermQuery(new Term("TokenizedId", "dot")), Occur.SHOULD)
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    new BooleanClause(new TermQuery(new Term("Version", "dot")), Occur.SHOULD)
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    new BooleanClause(new TermQuery(new Term("Title", "dot")), Occur.SHOULD)
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    new BooleanClause(new TermQuery(new Term("Description", "dot")), Occur.SHOULD)
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    new BooleanClause(new TermQuery(new Term("Summary", "dot")), Occur.SHOULD)
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    Clauses = { new BooleanClause(new TermQuery(new Term("Tags", "dot")), Occur.SHOULD) }, Boost = 2
                }, Occur.SHOULD),
                new BooleanClause(new BooleanQuery {
                    new BooleanClause(new TermQuery(new Term("Authors", "dot")), Occur.SHOULD)
                }, Occur.SHOULD)
            },
                new OwnersFilter(owners, "Microsoft"));

            // act
            var actual = NuGetQuery.MakeQuery(queryText, owners);

            // assert
            Assert.Equal(expected.ToString(), actual.ToString());
        }