Skip to content

Commit

Permalink
tidy
Browse files Browse the repository at this point in the history
  • Loading branch information
nzdev committed Dec 5, 2023
1 parent 77ede61 commit 74df139
Showing 1 changed file with 178 additions and 171 deletions.
349 changes: 178 additions & 171 deletions src/Examine.Test/Examine.Lucene/Search/FluentApiTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5192,6 +5192,8 @@ public void GivenTaxonomyIndexSearchAfterTake_Returns_ExpectedTotals_Facet(int f
}
}


[TestCase()]
public void GivenTaxonomyIndexFacetDrillDownSubquery_Returns_ExpectedTotals_Facet()
{
var analyzer = new StandardAnalyzer(LuceneInfo.CurrentVersion);
Expand Down Expand Up @@ -5240,178 +5242,183 @@ public void GivenTaxonomyIndexFacetDrillDownSubquery_Returns_ExpectedTotals_Face


//Act
// case: drill-down on a single field; in this
// case the drill-sideways + drill-down counts ==
// drill-down of just the query:
var sc = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results1 = sc.ExecuteWithLucene();

Assert.AreEqual(2, results1.Count());

var facetResults1PublishDate = results1.GetFacet("publishDate");
// Publish Date is only drill-down, and Lisa published
// one in 2012 and one in 2010:
Assert.AreEqual(2, facetResults1PublishDate.Count());

// Author is drill-sideways + drill-down: Lisa
// (drill-down) published twice, and Frank/Susan/Bob
// published once:
var facetResults1Author = results1.GetFacet("Author");
Assert.AreEqual(4, facetResults1Author.Count());

// Another simple case: drill-down on single fields
// but OR of two values
//Act
// case: drill-down on a single field; in this
// case the drill-sideways + drill-down counts ==
// drill-down of just the query:
var sc2 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("Author", "Bob");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results2 = sc2.ExecuteWithLucene();
Assert.AreEqual(3, results2.Count());

// Publish Date is only drill-down: Lisa and Bob
// (drill-down) published twice in 2010 and once in 2012:
var facetResults2PublishDate = results2.GetFacet("publishDate");
Assert.AreEqual(2, facetResults2PublishDate.Count());

// Author is drill-sideways + drill-down: Lisa
// (drill-down) published twice, and Frank/Susan/Bob
// published once:
var facetResults2Author = results2.GetFacet("Author");
Assert.AreEqual(4, facetResults2Author.Count());


// Publish Date is only drill-down: Lisa and Bob
// (drill-down) published twice in 2010 and once in 2012:
var sc3 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("Author", "Bob");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetAllDimensions(10);
}));
var results3 = sc3.ExecuteWithLucene();
// Author is drill-sideways + drill-down: Lisa
// (drill-down) published twice, and Frank/Susan/Bob
// published once:
var facetResults3All = results3.GetFacets();
Assert.AreEqual(3, facetResults3All.Count());

// More interesting case: drill-down on two fields
var sc4 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("publishDate", "2010");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results4 = sc4.ExecuteWithLucene();
Assert.AreEqual(1, results4.Count());

// Publish Date is drill-sideways + drill-down: Lisa
// (drill-down) published once in 2010 and once in 2012:
var facetResults4PublishDate = results4.GetFacet("publishDate");
Assert.AreEqual(2, facetResults4PublishDate.Count());

// Author is drill-sideways + drill-down:
// only Lisa & Bob published (once each) in 2010:
var facetResults4Author = results4.GetFacet("Author");
Assert.AreEqual(2, facetResults4Author.Count());


// Even more interesting case: drill down on two fields,
// but one of them is OR
var sc5 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("publishDate", "2010");
dims.AddDimension("Author", "Bob");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results5 = sc5.ExecuteWithLucene();
Assert.AreEqual(2, results5.Count());

// Publish Date is both drill-sideways + drill-down:
// Lisa or Bob published twice in 2010 and once in 2012:
var facetResults5PublishDate = results5.GetFacet("publishDate");
Assert.AreEqual(2, facetResults5PublishDate.Count());

// Author is drill-sideways + drill-down:
// only Lisa & Bob published (once each) in 2010:
var facetResults5Author = results5.GetFacet("Author");
Assert.AreEqual(2, facetResults5Author.Count());
BasicDrillSidewaysTests(taxonomySearcher);
}
}

private static void BasicDrillSidewaysTests(ISearcher taxonomySearcher)
{
// case: drill-down on a single field; in this
// case the drill-sideways + drill-down counts ==
// drill-down of just the query:
var sc = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results1 = sc.ExecuteWithLucene();

Assert.AreEqual(2, results1.Count());

var facetResults1PublishDate = results1.GetFacet("publishDate");
// Publish Date is only drill-down, and Lisa published
// one in 2012 and one in 2010:
Assert.AreEqual(2, facetResults1PublishDate.Count());

// Author is drill-sideways + drill-down: Lisa
// (drill-down) published twice, and Frank/Susan/Bob
// published once:
var facetResults1Author = results1.GetFacet("Author");
Assert.AreEqual(4, facetResults1Author.Count());

// Another simple case: drill-down on single fields
// but OR of two values
//Act
// case: drill-down on a single field; in this
// case the drill-sideways + drill-down counts ==
// drill-down of just the query:
var sc2 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("Author", "Bob");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results2 = sc2.ExecuteWithLucene();
Assert.AreEqual(3, results2.Count());

// Publish Date is only drill-down: Lisa and Bob
// (drill-down) published twice in 2010 and once in 2012:
var facetResults2PublishDate = results2.GetFacet("publishDate");
Assert.AreEqual(2, facetResults2PublishDate.Count());

// Author is drill-sideways + drill-down: Lisa
// (drill-down) published twice, and Frank/Susan/Bob
// published once:
var facetResults2Author = results2.GetFacet("Author");
Assert.AreEqual(4, facetResults2Author.Count());


// Publish Date is only drill-down: Lisa and Bob
// (drill-down) published twice in 2010 and once in 2012:
var sc3 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("Author", "Bob");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetAllDimensions(10);
}));
var results3 = sc3.ExecuteWithLucene();
// Author is drill-sideways + drill-down: Lisa
// (drill-down) published twice, and Frank/Susan/Bob
// published once:
var facetResults3All = results3.GetFacets();
Assert.AreEqual(3, facetResults3All.Count());

// More interesting case: drill-down on two fields
var sc4 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("publishDate", "2010");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results4 = sc4.ExecuteWithLucene();
Assert.AreEqual(1, results4.Count());

// Publish Date is drill-sideways + drill-down: Lisa
// (drill-down) published once in 2010 and once in 2012:
var facetResults4PublishDate = results4.GetFacet("publishDate");
Assert.AreEqual(2, facetResults4PublishDate.Count());

// Author is drill-sideways + drill-down:
// only Lisa & Bob published (once each) in 2010:
var facetResults4Author = results4.GetFacet("Author");
Assert.AreEqual(2, facetResults4Author.Count());


// Even more interesting case: drill down on two fields,
// but one of them is OR
var sc5 = taxonomySearcher.CreateQuery("content")
.DrillDownQuery(
dims =>
{
dims.AddDimension("Author", "Lisa");
dims.AddDimension("publishDate", "2010");
dims.AddDimension("Author", "Bob");
},
null
,
sideways =>
{
sideways.SetTopN(10);
},
BooleanOperation.Or)
.WithFacets((Action<IFacetOperations>)(facets =>
{
facets.FacetString("publishDate", x => x.MaxCount(10));
facets.FacetString("Author", x => x.MaxCount(10));
}));
var results5 = sc5.ExecuteWithLucene();
Assert.AreEqual(2, results5.Count());

// Publish Date is both drill-sideways + drill-down:
// Lisa or Bob published twice in 2010 and once in 2012:
var facetResults5PublishDate = results5.GetFacet("publishDate");
Assert.AreEqual(2, facetResults5PublishDate.Count());

// Author is drill-sideways + drill-down:
// only Lisa & Bob published (once each) in 2010:
var facetResults5Author = results5.GetFacet("Author");
Assert.AreEqual(2, facetResults5Author.Count());
}
}
}

0 comments on commit 74df139

Please sign in to comment.