public override bool Equals(object obj) { if (this == obj) { return(true); } if (!base.Equals(obj)) { return(false); } if (this.GetType() != obj.GetType()) { return(false); } AutomatonQuery other = (AutomatonQuery)obj; if (!Compiled.Equals(other.Compiled)) { return(false); } if (Term == null) { if (other.Term != null) { return(false); } } else if (!Term.Equals(other.Term)) { return(false); } return(true); }
public virtual void TestEquals() { AutomatonQuery a1 = new AutomatonQuery(NewTerm("foobar"), BasicAutomata.MakeString("foobar")); // reference to a1 AutomatonQuery a2 = a1; // same as a1 (accepts the same language, same term) AutomatonQuery a3 = new AutomatonQuery(NewTerm("foobar"), BasicOperations.Concatenate(BasicAutomata.MakeString("foo"), BasicAutomata.MakeString("bar"))); // different than a1 (same term, but different language) AutomatonQuery a4 = new AutomatonQuery(NewTerm("foobar"), BasicAutomata.MakeString("different")); // different than a1 (different term, same language) AutomatonQuery a5 = new AutomatonQuery(NewTerm("blah"), BasicAutomata.MakeString("foobar")); Assert.AreEqual(a1.GetHashCode(), a2.GetHashCode()); Assert.AreEqual(a1, a2); Assert.AreEqual(a1.GetHashCode(), a3.GetHashCode()); Assert.AreEqual(a1, a3); // different class AutomatonQuery w1 = new WildcardQuery(NewTerm("foobar")); // different class AutomatonQuery w2 = new RegexpQuery(NewTerm("foobar")); Assert.IsFalse(a1.Equals(w1)); Assert.IsFalse(a1.Equals(w2)); Assert.IsFalse(w1.Equals(w2)); Assert.IsFalse(a1.Equals(a4)); Assert.IsFalse(a1.Equals(a5)); Assert.IsFalse(a1.Equals(null)); }
private int AutomatonQueryNrHits(AutomatonQuery query) { if (VERBOSE) { Console.WriteLine("TEST: run aq=" + query); } return(Searcher.Search(query, 5).TotalHits); }
public virtual void TestRewriteSingleTerm() { AutomatonQuery aq = new AutomatonQuery(NewTerm("bogus"), BasicAutomata.MakeString("piece")); Terms terms = MultiFields.GetTerms(Searcher.IndexReader, FN); Assert.IsTrue(aq.GetTermsEnum(terms) is SingleTermsEnum); Assert.AreEqual(1, AutomatonQueryNrHits(aq)); }
public virtual void TestEmptyOptimization() { AutomatonQuery aq = new AutomatonQuery(NewTerm("bogus"), BasicAutomata.MakeEmpty()); // not yet available: Assert.IsTrue(aq.getEnum(searcher.getIndexReader()) // instanceof EmptyTermEnum); Terms terms = MultiFields.GetTerms(Searcher.IndexReader, FN); Assert.AreSame(TermsEnum.EMPTY, aq.GetTermsEnum(terms)); Assert.AreEqual(0, AutomatonQueryNrHits(aq)); }
public virtual void TestRewritePrefix() { Automaton pfx = BasicAutomata.MakeString("do"); pfx.ExpandSingleton(); // expand singleton representation for testing Automaton prefixAutomaton = BasicOperations.Concatenate(pfx, BasicAutomata.MakeAnyString()); AutomatonQuery aq = new AutomatonQuery(NewTerm("bogus"), prefixAutomaton); Terms terms = MultiFields.GetTerms(Searcher.IndexReader, FN); Assert.IsTrue(aq.GetTermsEnum(terms) is PrefixTermsEnum); Assert.AreEqual(3, AutomatonQueryNrHits(aq)); }
private void AssertAutomatonHits(int expected, Automaton automaton) { AutomatonQuery query = new AutomatonQuery(NewTerm("bogus"), automaton); query.MultiTermRewriteMethod = MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE; Assert.AreEqual(expected, AutomatonQueryNrHits(query)); query.MultiTermRewriteMethod = MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE; Assert.AreEqual(expected, AutomatonQueryNrHits(query)); query.MultiTermRewriteMethod = MultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE; Assert.AreEqual(expected, AutomatonQueryNrHits(query)); query.MultiTermRewriteMethod = MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT; Assert.AreEqual(expected, AutomatonQueryNrHits(query)); }
public virtual void TestHashCodeWithThreads() { AutomatonQuery[] queries = new AutomatonQuery[1000]; for (int i = 0; i < queries.Length; i++) { queries[i] = new AutomatonQuery(new Term("bogus", "bogus"), AutomatonTestUtil.RandomAutomaton(Random())); } CountdownEvent startingGun = new CountdownEvent(1); int numThreads = TestUtil.NextInt(Random(), 2, 5); ThreadClass[] threads = new ThreadClass[numThreads]; for (int threadID = 0; threadID < numThreads; threadID++) { ThreadClass thread = new ThreadAnonymousInnerClassHelper(this, queries, startingGun); threads[threadID] = thread; thread.Start(); } startingGun.Signal(); foreach (ThreadClass thread in threads) { thread.Join(); } }
public ThreadAnonymousInnerClassHelper(TestAutomatonQuery outerInstance, AutomatonQuery[] queries, CountDownLatch startingGun) { this.OuterInstance = outerInstance; this.Queries = queries; this.StartingGun = startingGun; }
private int AutomatonQueryNrHits(AutomatonQuery query) { if (VERBOSE) { Console.WriteLine("TEST: run aq=" + query); } return Searcher.Search(query, 5).TotalHits; }
public virtual void TestRewriteSingleTerm() { AutomatonQuery aq = new AutomatonQuery(NewTerm("bogus"), BasicAutomata.MakeString("piece")); Terms terms = MultiFields.GetTerms(Searcher.IndexReader, FN); Assert.IsTrue(aq.GetTermsEnum(terms) is SingleTermsEnum); Assert.AreEqual(1, AutomatonQueryNrHits(aq)); }
public virtual void TestRewritePrefix() { Automaton pfx = BasicAutomata.MakeString("do"); pfx.ExpandSingleton(); // expand singleton representation for testing Automaton prefixAutomaton = BasicOperations.Concatenate(pfx, BasicAutomata.MakeAnyString()); AutomatonQuery aq = new AutomatonQuery(NewTerm("bogus"), prefixAutomaton); Terms terms = MultiFields.GetTerms(Searcher.IndexReader, FN); var en = aq.GetTermsEnum(terms); Assert.IsTrue(en is PrefixTermsEnum, "Expected type PrefixTermEnum but was {0}", en.GetType().Name); Assert.AreEqual(3, AutomatonQueryNrHits(aq)); }
public virtual void TestHashCodeWithThreads() { AutomatonQuery[] queries = new AutomatonQuery[1000]; for (int i = 0; i < queries.Length; i++) { queries[i] = new AutomatonQuery(new Term("bogus", "bogus"), AutomatonTestUtil.RandomAutomaton(Random())); } CountDownLatch startingGun = new CountDownLatch(1); int numThreads = TestUtil.NextInt(Random(), 2, 5); ThreadClass[] threads = new ThreadClass[numThreads]; for (int threadID = 0; threadID < numThreads; threadID++) { ThreadClass thread = new ThreadAnonymousInnerClassHelper(this, queries, startingGun); threads[threadID] = thread; thread.Start(); } startingGun.countDown(); foreach (ThreadClass thread in threads) { thread.Join(); } }
public virtual void TestEquals() { AutomatonQuery a1 = new AutomatonQuery(NewTerm("foobar"), BasicAutomata.MakeString("foobar")); // reference to a1 AutomatonQuery a2 = a1; // same as a1 (accepts the same language, same term) AutomatonQuery a3 = new AutomatonQuery(NewTerm("foobar"), BasicOperations.Concatenate(BasicAutomata.MakeString("foo"), BasicAutomata.MakeString("bar"))); // different than a1 (same term, but different language) AutomatonQuery a4 = new AutomatonQuery(NewTerm("foobar"), BasicAutomata.MakeString("different")); // different than a1 (different term, same language) AutomatonQuery a5 = new AutomatonQuery(NewTerm("blah"), BasicAutomata.MakeString("foobar")); Assert.AreEqual(a1.GetHashCode(), a2.GetHashCode()); Assert.AreEqual(a1, a2); Assert.AreEqual(a1.GetHashCode(), a3.GetHashCode()); Assert.AreEqual(a1, a3); // different class AutomatonQuery w1 = new WildcardQuery(NewTerm("foobar")); // different class AutomatonQuery w2 = new RegexpQuery(NewTerm("foobar")); Assert.IsFalse(a1.Equals(w1)); Assert.IsFalse(a1.Equals(w2)); Assert.IsFalse(w1.Equals(w2)); Assert.IsFalse(a1.Equals(a4)); Assert.IsFalse(a1.Equals(a5)); Assert.IsFalse(a1.Equals(null)); }
private int AutomatonQueryNrHits(AutomatonQuery query) { return(Searcher.Search(query, 5).TotalHits); }
private void AssertAutomatonHits(int expected, Automaton automaton) { AutomatonQuery query = new AutomatonQuery(NewTerm("bogus"), automaton); query.SetRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE); Assert.AreEqual(expected, AutomatonQueryNrHits(query)); query.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE); Assert.AreEqual(expected, AutomatonQueryNrHits(query)); query.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE); Assert.AreEqual(expected, AutomatonQueryNrHits(query)); query.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT); Assert.AreEqual(expected, AutomatonQueryNrHits(query)); }
private int AutomatonQueryNrHits(AutomatonQuery query) { return Searcher.Search(query, 5).TotalHits; }
public virtual void TestEmptyOptimization() { AutomatonQuery aq = new AutomatonQuery(NewTerm("bogus"), BasicAutomata.MakeEmpty()); // not yet available: Assert.IsTrue(aq.getEnum(searcher.getIndexReader()) // instanceof EmptyTermEnum); Terms terms = MultiFields.GetTerms(Searcher.IndexReader, FN); Assert.AreSame(TermsEnum.EMPTY, aq.GetTermsEnum(terms)); Assert.AreEqual(0, AutomatonQueryNrHits(aq)); }