public static Create ( |
||
other | /// the Collector to wrap and delegate calls to. | |
cacheScores | bool | /// whether to cache scores in addition to document IDs. Note that /// this increases the RAM consumed per doc |
maxRAMMB | double | /// the maximum RAM in MB to consume for caching the documents and /// scores. If the collector exceeds the threshold, no documents and /// scores are cached. |
Результат |
public virtual void TestIllegalCollectorOnReplay() { // tests that the Collector passed to replay() has an out-of-order mode that // is valid with the Collector passed to the ctor // 'src' Collector does not support out-of-order CachingCollector cc = CachingCollector.Create(new NoOpCollector(false), true, 50 * ONE_BYTE); cc.SetScorer(new MockScorer()); for (int i = 0; i < 10; i++) { cc.Collect(i); } cc.Replay(new NoOpCollector(true)); // this call should not fail cc.Replay(new NoOpCollector(false)); // this call should not fail // 'src' Collector supports out-of-order cc = CachingCollector.Create(new NoOpCollector(true), true, 50 * ONE_BYTE); cc.SetScorer(new MockScorer()); for (int i = 0; i < 10; i++) { cc.Collect(i); } cc.Replay(new NoOpCollector(true)); // this call should not fail try { cc.Replay(new NoOpCollector(false)); // this call should fail Assert.Fail("should have failed if an in-order Collector was given to replay(), " + "while CachingCollector was initialized with out-of-order collection"); } catch (Exception e) when(e.IsIllegalArgumentException()) { // ok } }
public virtual void TestIllegalStateOnReplay() { CachingCollector cc = CachingCollector.Create(new NoOpCollector(false), true, 50 * ONE_BYTE); cc.SetScorer(new MockScorer()); // collect 130 docs, this should be enough for triggering cache abort. for (int i = 0; i < 130; i++) { cc.Collect(i); } Assert.IsFalse(cc.IsCached, "CachingCollector should not be cached due to low memory limit"); try { cc.Replay(new NoOpCollector(false)); Assert.Fail("replay should fail if CachingCollector is not cached"); } #pragma warning disable 168 catch (InvalidOperationException e) #pragma warning restore 168 { // expected } }
public virtual void TestNoWrappedCollector() { foreach (bool cacheScores in new bool[] { false, true }) { // create w/ null wrapped collector, and test that the methods work CachingCollector cc = CachingCollector.Create(true, cacheScores, 50 * ONE_BYTE); cc.SetNextReader(null); cc.SetScorer(new MockScorer()); cc.Collect(0); Assert.IsTrue(cc.IsCached); cc.Replay(new NoOpCollector(true)); } }
public virtual void TestBasic() { foreach (bool cacheScores in new bool[] { false, true }) { CachingCollector cc = CachingCollector.Create(new NoOpCollector(false), cacheScores, 1.0); cc.SetScorer(new MockScorer()); // collect 1000 docs for (int i = 0; i < 1000; i++) { cc.Collect(i); } // now replay them cc.Replay(new CollectorAnonymousClass(this)); } }
public virtual void TestCachedArraysAllocation() { // tests the cached arrays allocation -- if the 'nextLength' was too high, // caching would terminate even if a smaller length would suffice. // set RAM limit enough for 150 docs + random(10000) int numDocs = Random.Next(10000) + 150; foreach (bool cacheScores in new bool[] { false, true }) { int bytesPerDoc = cacheScores ? 8 : 4; CachingCollector cc = CachingCollector.Create(new NoOpCollector(false), cacheScores, bytesPerDoc * ONE_BYTE * numDocs); cc.SetScorer(new MockScorer()); for (int i = 0; i < numDocs; i++) { cc.Collect(i); } Assert.IsTrue(cc.IsCached); // The 151's document should terminate caching cc.Collect(numDocs); Assert.IsFalse(cc.IsCached); } }