public virtual void TestSimple() { AssertQueryEquals("term term term", null, "term term term"); AssertQueryEquals("türm term term", new WhitespaceAnalyzer(), "türm term term"); AssertQueryEquals("ümlaut", new WhitespaceAnalyzer(), "ümlaut"); AssertQueryEquals("\"\"", new KeywordAnalyzer(), ""); AssertQueryEquals("foo:\"\"", new KeywordAnalyzer(), "foo:"); AssertQueryEquals("a AND b", null, "+a +b"); AssertQueryEquals("(a AND b)", null, "+a +b"); AssertQueryEquals("c OR (a AND b)", null, "c (+a +b)"); AssertQueryEquals("a AND NOT b", null, "+a -b"); AssertQueryEquals("a AND -b", null, "+a -b"); AssertQueryEquals("a AND !b", null, "+a -b"); AssertQueryEquals("a && b", null, "+a +b"); AssertQueryEquals("a && ! b", null, "+a -b"); AssertQueryEquals("a OR b", null, "a b"); AssertQueryEquals("a || b", null, "a b"); AssertQueryEquals("a OR !b", null, "a -b"); AssertQueryEquals("a OR ! b", null, "a -b"); AssertQueryEquals("a OR -b", null, "a -b"); AssertQueryEquals("+term -term term", null, "+term -term term"); AssertQueryEquals("foo:term AND field:anotherTerm", null, "+foo:term +anotherterm"); AssertQueryEquals("term AND \"phrase phrase\"", null, "+term +\"phrase phrase\""); AssertQueryEquals("\"hello there\"", null, "\"hello there\""); Assert.IsTrue(GetQuery("a AND b", null) is BooleanQuery); Assert.IsTrue(GetQuery("hello", null) is TermQuery); Assert.IsTrue(GetQuery("\"hello there\"", null) is PhraseQuery); AssertQueryEquals("germ term^2.0", null, "germ term^2.0"); AssertQueryEquals("(term)^2.0", null, "term^2.0"); AssertQueryEquals("(germ term)^2.0", null, "(germ term)^2.0"); AssertQueryEquals("term^2.0", null, "term^2.0"); AssertQueryEquals("term^2", null, "term^2.0"); AssertQueryEquals("\"germ term\"^2.0", null, "\"germ term\"^2.0"); AssertQueryEquals("\"term germ\"^2", null, "\"term germ\"^2.0"); AssertQueryEquals("(foo OR bar) AND (baz OR boo)", null, "+(foo bar) +(baz boo)"); AssertQueryEquals("((a OR b) AND NOT c) OR d", null, "(+(a b) -c) d"); AssertQueryEquals("+(apple \"steve jobs\") -(foo bar baz)", null, "+(apple \"steve jobs\") -(foo bar baz)"); AssertQueryEquals("+title:(dog OR cat) -author:\"bob dole\"", null, "+(title:dog title:cat) -author:\"bob dole\""); Lucene.Net.QueryParsers.QueryParser qp = new Lucene.Net.QueryParsers.QueryParser("field", new StandardAnalyzer()); // make sure OR is the default: Assert.AreEqual(Lucene.Net.QueryParsers.QueryParser.OR_OPERATOR, qp.GetDefaultOperator()); qp.SetDefaultOperator(Lucene.Net.QueryParsers.QueryParser.AND_OPERATOR); Assert.AreEqual(Lucene.Net.QueryParsers.QueryParser.AND_OPERATOR, qp.GetDefaultOperator()); qp.SetDefaultOperator(Lucene.Net.QueryParsers.QueryParser.OR_OPERATOR); Assert.AreEqual(Lucene.Net.QueryParsers.QueryParser.OR_OPERATOR, qp.GetDefaultOperator()); }
public virtual Lucene.Net.QueryParsers.QueryParser GetParser(Analyzer a) { if (a == null) a = new SimpleAnalyzer(); Lucene.Net.QueryParsers.QueryParser qp = new Lucene.Net.QueryParsers.QueryParser("field", a); qp.SetDefaultOperator(Lucene.Net.QueryParsers.QueryParser.OR_OPERATOR); return qp; }
public virtual Query GetQueryDOA(System.String query, Analyzer a) { if (a == null) a = new SimpleAnalyzer(); Lucene.Net.QueryParsers.QueryParser qp = new Lucene.Net.QueryParsers.QueryParser("field", a); qp.SetDefaultOperator(Lucene.Net.QueryParsers.QueryParser.AND_OPERATOR); return qp.Parse(query); }
public virtual void TestMultiAnalyzer_Renamed_Method() { Lucene.Net.QueryParsers.QueryParser qp = new Lucene.Net.QueryParsers.QueryParser("", new MultiAnalyzer(this)); // trivial, no multiple tokens: Assert.AreEqual("foo", qp.Parse("foo").ToString()); Assert.AreEqual("foo", qp.Parse("\"foo\"").ToString()); Assert.AreEqual("foo foobar", qp.Parse("foo foobar").ToString()); Assert.AreEqual("\"foo foobar\"", qp.Parse("\"foo foobar\"").ToString()); Assert.AreEqual("\"foo foobar blah\"", qp.Parse("\"foo foobar blah\"").ToString()); // two tokens at the same position: Assert.AreEqual("(multi multi2) foo", qp.Parse("multi foo").ToString()); Assert.AreEqual("foo (multi multi2)", qp.Parse("foo multi").ToString()); Assert.AreEqual("(multi multi2) (multi multi2)", qp.Parse("multi multi").ToString()); Assert.AreEqual("+(foo (multi multi2)) +(bar (multi multi2))", qp.Parse("+(foo multi) +(bar multi)").ToString()); Assert.AreEqual("+(foo (multi multi2)) field:\"bar (multi multi2)\"", qp.Parse("+(foo multi) field:\"bar multi\"").ToString()); // phrases: Assert.AreEqual("\"(multi multi2) foo\"", qp.Parse("\"multi foo\"").ToString()); Assert.AreEqual("\"foo (multi multi2)\"", qp.Parse("\"foo multi\"").ToString()); Assert.AreEqual("\"foo (multi multi2) foobar (multi multi2)\"", qp.Parse("\"foo multi foobar multi\"").ToString()); // fields: Assert.AreEqual("(field:multi field:multi2) field:foo", qp.Parse("field:multi field:foo").ToString()); Assert.AreEqual("field:\"(multi multi2) foo\"", qp.Parse("field:\"multi foo\"").ToString()); // three tokens at one position: Assert.AreEqual("triplemulti multi3 multi2", qp.Parse("triplemulti").ToString()); Assert.AreEqual("foo (triplemulti multi3 multi2) foobar", qp.Parse("foo triplemulti foobar").ToString()); // phrase with non-default slop: Assert.AreEqual("\"(multi multi2) foo\"~10", qp.Parse("\"multi foo\"~10").ToString()); // phrase with non-default boost: Assert.AreEqual("\"(multi multi2) foo\"^2.0", qp.Parse("\"multi foo\"^2").ToString()); // phrase after changing default slop qp.SetPhraseSlop(99); Assert.AreEqual("\"(multi multi2) foo\"~99 bar", qp.Parse("\"multi foo\" bar").ToString()); Assert.AreEqual("\"(multi multi2) foo\"~99 \"foo bar\"~2", qp.Parse("\"multi foo\" \"foo bar\"~2").ToString()); qp.SetPhraseSlop(0); // non-default operator: qp.SetDefaultOperator(Lucene.Net.QueryParsers.QueryParser.AND_OPERATOR); Assert.AreEqual("+(multi multi2) +foo", qp.Parse("multi foo").ToString()); }