You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ar...@apache.org on 2006/08/17 15:49:32 UTC
svn commit: r432239 [7/8] - in /incubator/lucene.net/trunk/C#/src: ./
Demo/DeleteFiles/ Demo/DemoLib/ Demo/DemoLib/HTML/ Demo/IndexFiles/
Demo/IndexHtml/ Demo/SearchFiles/ Lucene.Net/ Lucene.Net/Analysis/
Lucene.Net/Analysis/Standard/ Lucene.Net/Docume...
Modified: incubator/lucene.net/trunk/C#/src/Test/QueryParser/TestMultiFieldQueryParser.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/QueryParser/TestMultiFieldQueryParser.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/QueryParser/TestMultiFieldQueryParser.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/QueryParser/TestMultiFieldQueryParser.cs Thu Aug 17 06:49:26 2006
@@ -99,27 +99,6 @@
Assert.AreEqual("+(b:\"aa bb cc\" t:\"aa bb cc\") +(b:\"dd ee\" t:\"dd ee\")", q.ToString());
}
- // TODO: remove this for Lucene 2.0
- [Test]
- public virtual void TestOldMethods()
- {
- // testing the old static calls that are now deprecated:
- AssertQueryEquals("b:one t:one", "one");
- AssertQueryEquals("(b:one b:two) (t:one t:two)", "one two");
- AssertQueryEquals("(b:one -b:two) (t:one -t:two)", "one -two");
- AssertQueryEquals("(b:one -(b:two b:three)) (t:one -(t:two t:three))", "one -(two three)");
- AssertQueryEquals("(+b:one +b:two) (+t:one +t:two)", "+one +two");
- }
-
- // TODO: remove this for Lucene 2.0
- private void AssertQueryEquals(System.String expected, System.String query)
- {
- System.String[] fields = new System.String[]{"b", "t"};
- Query q = MultiFieldQueryParser.Parse(query, fields, new StandardAnalyzer());
- System.String s = q.ToString();
- Assert.AreEqual(expected, s);
- }
-
[Test]
public virtual void TestStaticMethod1()
{
@@ -178,25 +157,28 @@
[Test]
public virtual void TestStaticMethod2Old()
{
- System.String[] fields = new System.String[]{"b", "t"};
- int[] flags = new int[]{MultiFieldQueryParser.REQUIRED_FIELD, MultiFieldQueryParser.PROHIBITED_FIELD};
- Query q = MultiFieldQueryParser.Parse("one", fields, flags, new StandardAnalyzer());
- Assert.AreEqual("+b:one -t:one", q.ToString());
-
- q = MultiFieldQueryParser.Parse("one two", fields, flags, new StandardAnalyzer());
- Assert.AreEqual("+(b:one b:two) -(t:one t:two)", q.ToString());
-
- try
- {
- int[] flags2 = new int[]{MultiFieldQueryParser.REQUIRED_FIELD};
- q = MultiFieldQueryParser.Parse("blah", fields, flags2, new StandardAnalyzer());
- Assert.Fail();
- }
- catch (System.ArgumentException e)
- {
- // expected exception, array length differs
- }
- }
+ System.String[] fields = new System.String[]{"b", "t"};
+ //int[] flags = {MultiFieldQueryParser.REQUIRED_FIELD, MultiFieldQueryParser.PROHIBITED_FIELD};
+ BooleanClause.Occur[] flags = new BooleanClause.Occur[]{BooleanClause.Occur.MUST, BooleanClause.Occur.MUST_NOT};
+ MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StandardAnalyzer());
+
+ Query q = MultiFieldQueryParser.Parse("one", fields, flags, new StandardAnalyzer()); //, fields, flags, new StandardAnalyzer());
+ Assert.AreEqual("+b:one -t:one", q.ToString());
+
+ q = MultiFieldQueryParser.Parse("one two", fields, flags, new StandardAnalyzer());
+ Assert.AreEqual("+(b:one b:two) -(t:one t:two)", q.ToString());
+
+ try
+ {
+ BooleanClause.Occur[] flags2 = new BooleanClause.Occur[]{BooleanClause.Occur.MUST};
+ q = MultiFieldQueryParser.Parse("blah", fields, flags2, new StandardAnalyzer());
+ Assert.Fail();
+ }
+ catch (System.ArgumentException e)
+ {
+ // expected exception, array length differs
+ }
+ }
[Test]
public virtual void TestStaticMethod3()
@@ -222,23 +204,23 @@
[Test]
public virtual void TestStaticMethod3Old()
{
- System.String[] queries = new System.String[]{"one", "two"};
- System.String[] fields = new System.String[]{"b", "t"};
- int[] flags = new int[]{MultiFieldQueryParser.REQUIRED_FIELD, MultiFieldQueryParser.PROHIBITED_FIELD};
- Query q = MultiFieldQueryParser.Parse(queries, fields, flags, new StandardAnalyzer());
- Assert.AreEqual("+b:one -t:two", q.ToString());
-
- try
- {
- int[] flags2 = new int[]{MultiFieldQueryParser.REQUIRED_FIELD};
- q = MultiFieldQueryParser.Parse(queries, fields, flags2, new StandardAnalyzer());
- Assert.Fail();
- }
- catch (System.ArgumentException e)
- {
- // expected exception, array length differs
- }
- }
+ System.String[] queries = new System.String[]{"one", "two"};
+ System.String[] fields = new System.String[]{"b", "t"};
+ BooleanClause.Occur[] flags = new BooleanClause.Occur[]{BooleanClause.Occur.MUST, BooleanClause.Occur.MUST_NOT};
+ Query q = MultiFieldQueryParser.Parse(queries, fields, flags, new StandardAnalyzer());
+ Assert.AreEqual("+b:one -t:two", q.ToString());
+
+ try
+ {
+ BooleanClause.Occur[] flags2 = new BooleanClause.Occur[]{BooleanClause.Occur.MUST};
+ q = MultiFieldQueryParser.Parse(queries, fields, flags2, new StandardAnalyzer());
+ Assert.Fail();
+ }
+ catch (System.ArgumentException e)
+ {
+ // expected exception, array length differs
+ }
+ }
[Test]
public virtual void TestAnalyzerReturningNull()
Modified: incubator/lucene.net/trunk/C#/src/Test/QueryParser/TestQueryParser.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/QueryParser/TestQueryParser.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/QueryParser/TestQueryParser.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/QueryParser/TestQueryParser.cs Thu Aug 17 06:49:26 2006
@@ -141,7 +141,16 @@
}
}
- public virtual void AssertWildcardQueryEquals(System.String query, bool lowercase, System.String result)
+ public virtual void AssertEscapedQueryEquals(System.String query, Analyzer a, System.String result)
+ {
+ System.String escapedQuery = Lucene.Net.QueryParsers.QueryParser.Escape(query);
+ if (!escapedQuery.Equals(result))
+ {
+ Assert.Fail("Query /" + query + "/ yielded /" + escapedQuery + "/, expecting /" + result + "/");
+ }
+ }
+
+ public virtual void AssertWildcardQueryEquals(System.String query, bool lowercase, System.String result)
{
Lucene.Net.QueryParsers.QueryParser qp = GetParser(null);
qp.SetLowercaseExpandedTerms(lowercase);
@@ -447,7 +456,44 @@
AssertQueryEquals("[ a\\\\ TO a\\* ]", null, "[a\\ TO a*]");
}
- [Test]
+ [Test]
+ public virtual void TestQueryStringEscaping()
+ {
+ Analyzer a = new WhitespaceAnalyzer();
+
+ AssertEscapedQueryEquals("a-b:c", a, "a\\-b\\:c");
+ AssertEscapedQueryEquals("a+b:c", a, "a\\+b\\:c");
+ AssertEscapedQueryEquals("a:b:c", a, "a\\:b\\:c");
+ AssertEscapedQueryEquals("a\\b:c", a, "a\\\\b\\:c");
+
+ AssertEscapedQueryEquals("a:b-c", a, "a\\:b\\-c");
+ AssertEscapedQueryEquals("a:b+c", a, "a\\:b\\+c");
+ AssertEscapedQueryEquals("a:b:c", a, "a\\:b\\:c");
+ AssertEscapedQueryEquals("a:b\\c", a, "a\\:b\\\\c");
+
+ AssertEscapedQueryEquals("a:b-c*", a, "a\\:b\\-c\\*");
+ AssertEscapedQueryEquals("a:b+c*", a, "a\\:b\\+c\\*");
+ AssertEscapedQueryEquals("a:b:c*", a, "a\\:b\\:c\\*");
+
+ AssertEscapedQueryEquals("a:b\\\\c*", a, "a\\:b\\\\\\\\c\\*");
+
+ AssertEscapedQueryEquals("a:b-?c", a, "a\\:b\\-\\?c");
+ AssertEscapedQueryEquals("a:b+?c", a, "a\\:b\\+\\?c");
+ AssertEscapedQueryEquals("a:b:?c", a, "a\\:b\\:\\?c");
+
+ AssertEscapedQueryEquals("a:b?c", a, "a\\:b\\?c");
+
+ AssertEscapedQueryEquals("a:b-c~", a, "a\\:b\\-c\\~");
+ AssertEscapedQueryEquals("a:b+c~", a, "a\\:b\\+c\\~");
+ AssertEscapedQueryEquals("a:b:c~", a, "a\\:b\\:c\\~");
+ AssertEscapedQueryEquals("a:b\\c~", a, "a\\:b\\\\c\\~");
+
+ AssertEscapedQueryEquals("[ a - TO a+ ]", null, "\\[ a \\- TO a\\+ \\]");
+ AssertEscapedQueryEquals("[ a : TO a~ ]", null, "\\[ a \\: TO a\\~ \\]");
+ AssertEscapedQueryEquals("[ a\\ TO a* ]", null, "\\[ a\\\\ TO a\\* \\]");
+ }
+
+ [Test]
public virtual void TestTabNewlineCarriageReturn()
{
AssertQueryEqualsDOA("+weltbank +worlbank", null, "+weltbank +worlbank");
@@ -571,7 +617,43 @@
Assert.AreEqual(query1, query2);
}
- [TearDown]
+ [Test]
+ public virtual void TestLocalDateFormat()
+ {
+ Lucene.Net.Store.RAMDirectory ramDir = new Lucene.Net.Store.RAMDirectory();
+ Lucene.Net.Index.IndexWriter iw = new Lucene.Net.Index.IndexWriter(ramDir, new WhitespaceAnalyzer(), true);
+ AddDateDoc("a", 2005, 12, 2, 10, 15, 33, iw);
+ AddDateDoc("b", 2005, 12, 4, 22, 15, 0, iw);
+ iw.Close();
+ Lucene.Net.Search.IndexSearcher is_Renamed = new Lucene.Net.Search.IndexSearcher(ramDir);
+ AssertHits(1, "[12/1/2005 TO 12/3/2005]", is_Renamed);
+ AssertHits(2, "[12/1/2005 TO 12/4/2005]", is_Renamed);
+ AssertHits(1, "[12/3/2005 TO 12/4/2005]", is_Renamed);
+ AssertHits(1, "{12/1/2005 TO 12/3/2005}", is_Renamed);
+ AssertHits(1, "{12/1/2005 TO 12/4/2005}", is_Renamed);
+ AssertHits(0, "{12/3/2005 TO 12/4/2005}", is_Renamed);
+ is_Renamed.Close();
+ }
+
+ private void AssertHits(int expected, System.String query, Lucene.Net.Search.IndexSearcher is_Renamed)
+ {
+ Lucene.Net.QueryParsers.QueryParser qp = new Lucene.Net.QueryParsers.QueryParser("date", new WhitespaceAnalyzer());
+ qp.SetLocale(new System.Globalization.CultureInfo("en"));
+ Query q = qp.Parse(query);
+ Lucene.Net.Search.Hits hits = is_Renamed.Search(q);
+ Assert.AreEqual(expected, hits.Length());
+ }
+
+ private static void AddDateDoc(System.String content, int year, int month, int day, int hour, int minute, int second, Lucene.Net.Index.IndexWriter iw)
+ {
+ Lucene.Net.Documents.Document d = new Lucene.Net.Documents.Document();
+ d.Add(new Lucene.Net.Documents.Field("f", content, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.TOKENIZED));
+ System.DateTime tempAux = new System.DateTime(year, month - 1, day, hour, minute, second);
+ d.Add(new Lucene.Net.Documents.Field("date", DateField.DateToString(tempAux), Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.UN_TOKENIZED));
+ iw.AddDocument(d);
+ }
+
+ [TearDown]
public virtual void TearDown()
{
BooleanQuery.SetMaxClauseCount(originalMaxClauses);
Added: incubator/lucene.net/trunk/C#/src/Test/Search/Regex/_delete_TestRegexQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/Regex/_delete_TestRegexQuery.cs?rev=432239&view=auto
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/Regex/_delete_TestRegexQuery.cs (added)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/Regex/_delete_TestRegexQuery.cs Thu Aug 17 06:49:26 2006
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using NUnit.Framework;
+using SimpleAnalyzer = Lucene.Net.Analysis.SimpleAnalyzer;
+using Document = Lucene.Net.Documents.Document;
+using Field = Lucene.Net.Documents.Field;
+using IndexWriter = Lucene.Net.Index.IndexWriter;
+using Term = Lucene.Net.Index.Term;
+using IndexSearcher = Lucene.Net.Search.IndexSearcher;
+using Query = Lucene.Net.Search.Query;
+using SpanNearQuery = Lucene.Net.Search.Spans.SpanNearQuery;
+using SpanQuery = Lucene.Net.Search.Spans.SpanQuery;
+using RAMDirectory = Lucene.Net.Store.RAMDirectory;
+
+namespace Lucene.Net.Search.Regex
+{
+#if DELETE_ME
+ [TestFixture]
+ public class TestRegexQuery
+ {
+ private IndexSearcher searcher;
+ private System.String FN = "field";
+
+
+ [STAThread]
+ public static void Main(System.String[] args)
+ {
+ TestRegexQuery t = new TestRegexQuery();
+ t.SetUp();
+ t.TestRegex1();
+ }
+
+ [SetUp]
+ public virtual void SetUp()
+ {
+ RAMDirectory directory = new RAMDirectory();
+ try
+ {
+ IndexWriter writer = new IndexWriter(directory, new SimpleAnalyzer(), true);
+ Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
+ doc.Add(new Field(FN, "the quick brown fox jumps over the lazy dog", Field.Store.NO, Field.Index.TOKENIZED));
+ writer.AddDocument(doc);
+ writer.Optimize();
+ writer.Close();
+ searcher = new IndexSearcher(directory);
+ }
+ catch (System.Exception e)
+ {
+ Assert.Fail(e.ToString());
+ }
+ }
+
+ [TearDown]
+ public virtual void TearDown()
+ {
+ try
+ {
+ searcher.Close();
+ }
+ catch (System.Exception e)
+ {
+ Assert.Fail(e.ToString());
+ }
+ }
+
+ private Term NewTerm(System.String value_Renamed)
+ {
+ return new Term(FN, value_Renamed);
+ }
+
+ private int RegexQueryNrHits(System.String regex)
+ {
+ Query query = new RegexQuery(NewTerm(regex));
+ return searcher.Search(query).Length();
+ }
+
+ private int SpanRegexQueryNrHits(System.String regex1, System.String regex2, int slop, bool ordered)
+ {
+ SpanRegexQuery srq1 = new SpanRegexQuery(NewTerm(regex1));
+ SpanRegexQuery srq2 = new SpanRegexQuery(NewTerm(regex2));
+ SpanNearQuery query = new SpanNearQuery(new SpanQuery[]{srq1, srq2}, slop, ordered);
+ return searcher.Search(query).Length();
+ }
+
+ [Test]
+ public virtual void TestRegex1()
+ {
+ Assert.AreEqual(1, RegexQueryNrHits("q.[aeiou]c.*"));
+ }
+
+ [Test]
+ public virtual void TestRegex2()
+ {
+ Assert.AreEqual(0, RegexQueryNrHits("^.[aeiou]c.*"));
+ }
+
+ [Test]
+ public virtual void TestRegex3()
+ {
+ Assert.AreEqual(0, RegexQueryNrHits("^q.[aeiou]c$"));
+ }
+
+ [Test]
+ public virtual void TestSpanRegex1()
+ {
+ Assert.AreEqual(1, SpanRegexQueryNrHits("q.[aeiou]c.*", "dog", 6, true));
+ }
+
+ [Test]
+ public virtual void TestSpanRegex2()
+ {
+ Assert.AreEqual(0, SpanRegexQueryNrHits("q.[aeiou]c.*", "dog", 5, true));
+ }
+
+ // public void testPrefix() throws Exception {
+ // This test currently fails because RegexTermEnum picks "r" as the prefix
+ // but the following "?" makes the "r" optional and should be a hit for the
+ // document matching "over".
+ // Assert.AreEqual(1, regexQueryNrHits("r?over"));
+ // }
+ }
+#endif
+}
\ No newline at end of file
Added: incubator/lucene.net/trunk/C#/src/Test/Search/Regex/_delete_TestSpanRegexQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/Regex/_delete_TestSpanRegexQuery.cs?rev=432239&view=auto
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/Regex/_delete_TestSpanRegexQuery.cs (added)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/Regex/_delete_TestSpanRegexQuery.cs Thu Aug 17 06:49:26 2006
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using NUnit.Framework;
+using SimpleAnalyzer = Lucene.Net.Analysis.SimpleAnalyzer;
+using Document = Lucene.Net.Documents.Document;
+using Field = Lucene.Net.Documents.Field;
+using IndexWriter = Lucene.Net.Index.IndexWriter;
+using Term = Lucene.Net.Index.Term;
+using Hits = Lucene.Net.Search.Hits;
+using IndexSearcher = Lucene.Net.Search.IndexSearcher;
+using SpanNearQuery = Lucene.Net.Search.Spans.SpanNearQuery;
+using SpanQuery = Lucene.Net.Search.Spans.SpanQuery;
+using SpanTermQuery = Lucene.Net.Search.Spans.SpanTermQuery;
+using RAMDirectory = Lucene.Net.Store.RAMDirectory;
+
+namespace Lucene.Net.Search.Regex
+{
+#if DELETE_ME
+ [TestFixture]
+ public class TestSpanRegexQuery
+ {
+ [Test]
+ public virtual void TestSpanRegex()
+ {
+ RAMDirectory directory = new RAMDirectory();
+ IndexWriter writer = new IndexWriter(directory, new SimpleAnalyzer(), true);
+ Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
+ doc.Add(new Field("field", "the quick brown fox jumps over the lazy dog", Field.Store.NO, Field.Index.TOKENIZED));
+ writer.AddDocument(doc);
+ writer.Optimize();
+ writer.Close();
+
+ IndexSearcher searcher = new IndexSearcher(directory);
+ SpanRegexQuery srq = new SpanRegexQuery(new Term("field", "q.[aeiou]c.*"));
+ SpanTermQuery stq = new SpanTermQuery(new Term("field", "dog"));
+ SpanNearQuery query = new SpanNearQuery(new SpanQuery[]{srq, stq}, 6, true);
+ Hits hits = searcher.Search(query);
+ Assert.AreEqual(1, hits.Length());
+ }
+ }
+#endif
+}
\ No newline at end of file
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/SampleComparable.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/SampleComparable.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/SampleComparable.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/SampleComparable.cs Thu Aug 17 06:49:26 2006
@@ -171,6 +171,16 @@
return new SampleComparable(termtext);
}
}
+
+ public static SortComparatorSource GetComparatorSource()
+ {
+ return new AnonymousClassSortComparatorSource();
+ }
+
+ public static SortComparator GetComparator()
+ {
+ return new AnonymousClassSortComparator();
+ }
internal System.String string_part;
internal System.Int32 int_part;
@@ -191,16 +201,6 @@
return int_part.CompareTo(otherid.int_part);
}
return i;
- }
-
- public static SortComparatorSource GetComparatorSource()
- {
- return new AnonymousClassSortComparatorSource();
- }
-
- public static SortComparator GetComparator()
- {
- return new AnonymousClassSortComparator();
}
}
}
Added: incubator/lucene.net/trunk/C#/src/Test/Search/SingleDocTestFilter.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/SingleDocTestFilter.cs?rev=432239&view=auto
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/SingleDocTestFilter.cs (added)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/SingleDocTestFilter.cs Thu Aug 17 06:49:26 2006
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using IndexReader = Lucene.Net.Index.IndexReader;
+
+namespace Lucene.Net.search
+{
+
+ [Serializable]
+ public class SingleDocTestFilter : Lucene.Net.Search.Filter
+ {
+ private int doc;
+
+ public SingleDocTestFilter(int doc)
+ {
+ this.doc = doc;
+ }
+
+ public override System.Collections.BitArray Bits(IndexReader reader)
+ {
+ System.Collections.BitArray bits = new System.Collections.BitArray((reader.MaxDoc() % 64 == 0 ? reader.MaxDoc() / 64 : reader.MaxDoc() / 64 + 1) * 64);
+
+ for (int increment = 0; doc >= bits.Length; increment =+ 64)
+ {
+ bits.Length += increment;
+ }
+ bits.Set(doc, true);
+
+ return bits;
+ }
+ }
+}
\ No newline at end of file
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestBasics.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/Spans/TestBasics.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestBasics.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestBasics.cs Thu Aug 17 06:49:26 2006
@@ -125,7 +125,11 @@
Assert.IsTrue(searcher.Explain(query, 77).GetValue() > 0.0f);
Assert.IsTrue(searcher.Explain(query, 977).GetValue() > 0.0f);
- }
+
+ QueryUtils.Check(term1);
+ QueryUtils.Check(term2);
+ QueryUtils.CheckUnequal(term1, term2);
+ }
[Test]
public virtual void TestSpanNearUnordered()
@@ -161,7 +165,80 @@
Assert.IsTrue(searcher.Explain(query, 891).GetValue() > 0.0f);
}
- [Test]
+ [Test]
+ public virtual void TestSpanWithMultipleNotSingle()
+ {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "one"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[]{term1, term2}, 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "forty"));
+
+ SpanOrQuery or = new SpanOrQuery(new SpanQuery[]{term3});
+
+ SpanNotQuery query = new SpanNotQuery(near, or);
+
+ CheckHits(query, new int[]{801, 821, 831, 851, 861, 871, 881, 891});
+
+ Assert.IsTrue(searcher.Explain(query, 801).GetValue() > 0.0f);
+ Assert.IsTrue(searcher.Explain(query, 891).GetValue() > 0.0f);
+ }
+
+ [Test]
+ public virtual void TestSpanWithMultipleNotMany()
+ {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "one"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[]{term1, term2}, 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "forty"));
+ SpanTermQuery term4 = new SpanTermQuery(new Term("field", "sixty"));
+ SpanTermQuery term5 = new SpanTermQuery(new Term("field", "eighty"));
+
+ SpanOrQuery or = new SpanOrQuery(new SpanQuery[]{term3, term4, term5});
+
+ SpanNotQuery query = new SpanNotQuery(near, or);
+
+ CheckHits(query, new int[]{801, 821, 831, 851, 871, 891});
+
+ Assert.IsTrue(searcher.Explain(query, 801).GetValue() > 0.0f);
+ Assert.IsTrue(searcher.Explain(query, 891).GetValue() > 0.0f);
+ }
+
+ [Test]
+ public virtual void TestNpeInSpanNearWithSpanNot()
+ {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "one"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[]{term1, term2}, 4, true);
+ SpanTermQuery hun = new SpanTermQuery(new Term("field", "hundred"));
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "forty"));
+ SpanNearQuery exclude = new SpanNearQuery(new SpanQuery[]{hun, term3}, 1, true);
+
+ SpanNotQuery query = new SpanNotQuery(near, exclude);
+
+ CheckHits(query, new int[]{801, 821, 831, 851, 861, 871, 881, 891});
+
+ Assert.IsTrue(searcher.Explain(query, 801).GetValue() > 0.0f);
+ Assert.IsTrue(searcher.Explain(query, 891).GetValue() > 0.0f);
+ }
+
+
+ [Test]
+ public virtual void TestNpeInSpanNearInSpanFirstInSpanNot()
+ {
+ int n = 5;
+ SpanTermQuery hun = new SpanTermQuery(new Term("field", "hundred"));
+ SpanTermQuery term40 = new SpanTermQuery(new Term("field", "forty"));
+ SpanTermQuery term40c = (SpanTermQuery) term40.Clone();
+
+ SpanFirstQuery include = new SpanFirstQuery(term40, n);
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[]{hun, term40c}, n - 1, true);
+ SpanFirstQuery exclude = new SpanFirstQuery(near, n - 1);
+ SpanNotQuery q = new SpanNotQuery(include, exclude);
+
+ CheckHits(q, new int[]{40, 41, 42, 43, 44, 45, 46, 47, 48, 49});
+ }
+
+ [Test]
public virtual void TestSpanFirst()
{
SpanTermQuery term1 = new SpanTermQuery(new Term("field", "five"));
@@ -252,7 +329,8 @@
private void CheckHits(Query query, int[] results)
{
- Lucene.Net.Search.CheckHits.CheckHits_Renamed_Method(query, "field", searcher, results);
- }
+ Lucene.Net.Search.CheckHits.CheckHits_Renamed_Method(query, "field", searcher, results);
+ QueryUtils.Check(query);
+ }
}
}
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestSpansAdvanced.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/Spans/TestSpansAdvanced.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestSpansAdvanced.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestSpansAdvanced.cs Thu Aug 17 06:49:26 2006
@@ -46,7 +46,9 @@
// location to the index
protected internal Directory mDirectory;
- // field names in the index
+ protected internal IndexSearcher searcher;
+
+ // field names in the index
private const System.String FIELD_ID = "ID";
protected internal const System.String FIELD_TEXT = "TEXT";
@@ -63,13 +65,14 @@
AddDocument(writer, "3", "I think it should work.");
AddDocument(writer, "4", "I think it should work.");
writer.Close();
- }
+ searcher = new IndexSearcher(mDirectory);
+ }
[TearDown]
public virtual void TearDown()
{
-
- mDirectory.Close();
+ searcher.Close();
+ mDirectory.Close();
mDirectory = null;
}
@@ -100,41 +103,25 @@
public virtual void TestBooleanQueryWithSpanQueries()
{
- DoTestBooleanQueryWithSpanQueries(0.3884282f);
+ DoTestBooleanQueryWithSpanQueries(searcher, 0.3884282f);
}
/// <summary> Tests two span queries.
///
/// </summary>
/// <throws> IOException </throws>
- protected internal virtual void DoTestBooleanQueryWithSpanQueries(float expectedScore)
+ protected internal virtual void DoTestBooleanQueryWithSpanQueries(IndexSearcher s, float expectedScore)
{
Query spanQuery = new SpanTermQuery(new Term(FIELD_TEXT, "work"));
BooleanQuery query = new BooleanQuery();
query.Add(spanQuery, BooleanClause.Occur.MUST);
query.Add(spanQuery, BooleanClause.Occur.MUST);
- Hits hits = ExecuteQuery(query);
- System.String[] expectedIds = new System.String[]{"1", "2", "3", "4"};
+ System.String[] expectedIds = new System.String[]{"1", "2", "3", "4"};
float[] expectedScores = new float[]{expectedScore, expectedScore, expectedScore, expectedScore};
- AssertHits(hits, "two span queries", expectedIds, expectedScores);
+ AssertHits(s, query, "two span queries", expectedIds, expectedScores);
}
- /// <summary> Executes the query and throws an assertion if the results don't match the
- /// expectedHits.
- ///
- /// </summary>
- /// <param name="query">the query to execute
- /// </param>
- /// <throws> IOException </throws>
- protected internal virtual Hits ExecuteQuery(Query query)
- {
-
- IndexSearcher searcher = new IndexSearcher(mDirectory);
- Hits hits = searcher.Search(query);
- searcher.Close();
- return hits;
- }
/// <summary> Checks to see if the hits are what we expected.
///
@@ -149,22 +136,43 @@
///
/// </param>
/// <throws> IOException </throws>
- protected internal virtual void AssertHits(Hits hits, System.String description, System.String[] expectedIds, float[] expectedScores)
+ protected internal virtual void AssertHits(Searcher s, Query query, System.String description, System.String[] expectedIds, float[] expectedScores)
{
+ float tolerance = 1e-5f;
- // display the hits
- /*System.out.println(hits.length() + " hits for search: \"" + description + '\"');
- for (int i = 0; i < hits.length(); i++) {
- System.out.println(" " + FIELD_ID + ':' + hits.doc(i).get(FIELD_ID) + " (score:" + hits.score(i) + ')');
- }*/
-
- // did we get the hits we expected
- Assert.AreEqual(expectedIds.Length, hits.Length());
- for (int i = 0; i < hits.Length(); i++)
- {
- Assert.IsTrue(expectedIds[i].Equals(hits.Doc(i).Get(FIELD_ID)));
- Assert.AreEqual(expectedScores[i], hits.Score(i), 0);
- }
- }
+ // Hits hits = searcher.search(query);
+ // hits normalizes and throws things off if one score is greater than 1.0
+ TopDocs topdocs = s.Search(query, null, 10000);
+
+ /// <summary>**
+ /// // display the hits
+ /// System.out.println(hits.length() + " hits for search: \"" + description + '\"');
+ /// for (int i = 0; i < hits.length(); i++) {
+ /// System.out.println(" " + FIELD_ID + ':' + hits.doc(i).get(FIELD_ID) + " (score:" + hits.score(i) + ')');
+ /// }
+ /// ***
+ /// </summary>
+
+ // did we get the hits we expected
+ Assert.AreEqual(expectedIds.Length, topdocs.totalHits);
+ for (int i = 0; i < topdocs.totalHits; i++)
+ {
+ //System.out.println(i + " exp: " + expectedIds[i]);
+ //System.out.println(i + " field: " + hits.doc(i).get(FIELD_ID));
+
+ int id = topdocs.scoreDocs[i].doc;
+ float score = topdocs.scoreDocs[i].score;
+ Lucene.Net.Documents.Document doc = s.Doc(id);
+ Assert.AreEqual(expectedIds[i], doc.Get(FIELD_ID));
+ bool scoreEq = System.Math.Abs(expectedScores[i] - score) < tolerance;
+ if (!scoreEq)
+ {
+ System.Console.Out.WriteLine(i + " warning, expected score: " + expectedScores[i] + ", actual " + score);
+ System.Console.Out.WriteLine(s.Explain(query, id));
+ }
+ Assert.AreEqual(expectedScores[i], score, tolerance);
+ Assert.AreEqual(s.Explain(query, id).GetValue(), score, tolerance);
+ }
+ }
}
}
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestSpansAdvanced2.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/Spans/TestSpansAdvanced2.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestSpansAdvanced2.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/Spans/TestSpansAdvanced2.cs Thu Aug 17 06:49:26 2006
@@ -37,7 +37,7 @@
/// </author>
public class TestSpansAdvanced2:TestSpansAdvanced
{
-
+ internal IndexSearcher searcher2;
/// <summary> Initializes the tests by adding documents to the index.</summary>
[SetUp]
public virtual void SetUp()
@@ -51,7 +51,10 @@
AddDocument(writer, "C", "It shouldn't.");
AddDocument(writer, "D", "Should we, should we, should we.");
writer.Close();
- }
+
+ // re-open the searcher since we added more docs
+ searcher2 = new IndexSearcher(mDirectory);
+ }
/// <summary> Verifies that the index has the correct number of documents.
///
@@ -74,10 +77,9 @@
{
Query spanQuery = new SpanTermQuery(new Term(FIELD_TEXT, "should"));
- Hits hits = ExecuteQuery(spanQuery);
System.String[] expectedIds = new System.String[]{"B", "D", "1", "2", "3", "4", "A"};
float[] expectedScores = new float[]{0.625f, 0.45927936f, 0.35355338f, 0.35355338f, 0.35355338f, 0.35355338f, 0.26516503f};
- AssertHits(hits, "single span query", expectedIds, expectedScores);
+ AssertHits(searcher2, spanQuery, "single span query", expectedIds, expectedScores);
}
/// <summary> Tests a single span query that matches multiple documents.
@@ -93,10 +95,11 @@
BooleanQuery query = new BooleanQuery();
query.Add(spanQuery1, BooleanClause.Occur.MUST);
query.Add(spanQuery2, BooleanClause.Occur.MUST);
- Hits hits = ExecuteQuery(query);
- System.String[] expectedIds = new System.String[]{"A", "D"};
- float[] expectedScores = new float[]{0.93163157f, 0.20698164f};
- AssertHits(hits, "multiple different span queries", expectedIds, expectedScores);
+ System.String[] expectedIds = new System.String[]{"D", "A"};
+ // these values were pre LUCENE-413
+ // float[] expectedScores = new float[]{0.93163157f, 0.20698164f};
+ float[] expectedScores = new float[]{1.0191123f, 0.93163157f};
+ AssertHits(searcher2, query, "multiple different span queries", expectedIds, expectedScores);
}
/// <summary> Tests two span queries.
@@ -107,7 +110,7 @@
public override void TestBooleanQueryWithSpanQueries()
{
- DoTestBooleanQueryWithSpanQueries(0.73500174f);
+ DoTestBooleanQueryWithSpanQueries(searcher2, 0.73500174f);
}
}
}
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestBooleanMinShouldMatch.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestBooleanMinShouldMatch.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestBooleanMinShouldMatch.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestBooleanMinShouldMatch.cs Thu Aug 17 06:49:26 2006
@@ -89,12 +89,12 @@
for (int i = 0; i < data.Length; i++)
{
Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
- doc.Add(Field.Keyword("id", System.Convert.ToString(i)));
- doc.Add(Field.Keyword("all", "all"));
- if (null != data[i])
+ doc.Add(new Field("id", System.Convert.ToString(i), Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("id",String.valueOf(i)));
+ doc.Add(new Field("all", "all", Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("all","all"));
+ if (null != data[i])
{
- doc.Add(Field.Text("data", data[i]));
- }
+ doc.Add(new Field("data", data[i], Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("data",data[i]));
+ }
writer.AddDocument(doc);
}
@@ -113,7 +113,7 @@
if (expected != h.Length())
{
PrintHits("TestBooleanMinShouldMatch", h); // PrintHits(NUnit.Framework.TestCase.GetName(), h); // {{Aroush-1.9}} 'GetName()' gives us the name of the test in JUnit, how is it done in NUnit?
- }
+ }
Assert.AreEqual(expected, h.Length(), "result count");
}
@@ -124,7 +124,7 @@
BooleanQuery q = new BooleanQuery();
for (int i = 1; i <= 4; i++)
{
- q.Add(new TermQuery(new Term("data", "" + i)), false, false);
+ q.Add(new TermQuery(new Term("data", "" + i)), BooleanClause.Occur.SHOULD); //false, false);
}
q.SetMinimumNumberShouldMatch(2); // match at least two of 4
VerifyNrHits(q, 2);
@@ -136,10 +136,10 @@
/* one required, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), true, false);
- q.Add(new TermQuery(new Term("data", "5")), false, false);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, false);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.SHOULD); //false, false);
q.SetMinimumNumberShouldMatch(2); // 2 of 3 optional
@@ -152,11 +152,11 @@
/* two required, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), true, false);
- q.Add(new TermQuery(new Term("data", "6")), true, false);
- q.Add(new TermQuery(new Term("data", "5")), false, false);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, false);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.SHOULD); //false, false);
q.SetMinimumNumberShouldMatch(2); // 2 of 3 optional
@@ -169,10 +169,10 @@
/* one prohibited, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("data", "1")), false, false);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, true);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
+ q.Add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); //false, true );
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
q.SetMinimumNumberShouldMatch(2); // 2 of 3 optional
@@ -185,11 +185,11 @@
/* two prohibited, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("data", "1")), false, false);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, true);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "C")), false, true);
+ q.Add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); //false, true );
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "C")), BooleanClause.Occur.MUST_NOT); //false, true );
q.SetMinimumNumberShouldMatch(2); // 2 of 3 optional
@@ -202,12 +202,12 @@
/* one required, one prohibited, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("data", "6")), true, false);
- q.Add(new TermQuery(new Term("data", "5")), false, false);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, true);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
- q.Add(new TermQuery(new Term("data", "1")), false, false);
+ q.Add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); // true, false);
+ q.Add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); //false, true );
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); //false, false);
q.SetMinimumNumberShouldMatch(3); // 3 of 4 optional
@@ -220,13 +220,13 @@
/* two required, one prohibited, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), true, false);
- q.Add(new TermQuery(new Term("data", "6")), true, false);
- q.Add(new TermQuery(new Term("data", "5")), false, false);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, true);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
- q.Add(new TermQuery(new Term("data", "1")), false, false);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); //false, true );
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); //false, false);
q.SetMinimumNumberShouldMatch(3); // 3 of 4 optional
@@ -239,13 +239,13 @@
/* one required, two prohibited, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("data", "6")), true, false);
- q.Add(new TermQuery(new Term("data", "5")), false, false);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, true);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
- q.Add(new TermQuery(new Term("data", "1")), false, false);
- q.Add(new TermQuery(new Term("data", "C")), false, true);
+ q.Add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); //false, true );
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "C")), BooleanClause.Occur.MUST_NOT); //false, true );
q.SetMinimumNumberShouldMatch(3); // 3 of 4 optional
@@ -258,14 +258,14 @@
/* two required, two prohibited, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), true, false);
- q.Add(new TermQuery(new Term("data", "6")), true, false);
- q.Add(new TermQuery(new Term("data", "5")), false, false);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, true);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
- q.Add(new TermQuery(new Term("data", "1")), false, false);
- q.Add(new TermQuery(new Term("data", "C")), false, true);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); //false, true );
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "C")), BooleanClause.Occur.MUST_NOT); //false, true );
q.SetMinimumNumberShouldMatch(3); // 3 of 4 optional
@@ -278,14 +278,14 @@
/* two required, two prohibited, some optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), true, false);
- q.Add(new TermQuery(new Term("data", "6")), true, false);
- q.Add(new TermQuery(new Term("data", "5")), false, false);
- q.Add(new TermQuery(new Term("data", "4")), false, false);
- q.Add(new TermQuery(new Term("data", "3")), false, true);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
- q.Add(new TermQuery(new Term("data", "1")), false, false);
- q.Add(new TermQuery(new Term("data", "C")), false, true);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "5")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "4")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST_NOT); //false, true );
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "1")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "C")), BooleanClause.Occur.MUST_NOT); //false, true );
q.SetMinimumNumberShouldMatch(90); // 90 of 4 optional ?!?!?!
@@ -298,10 +298,10 @@
/* two required, two optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), false, false);
- q.Add(new TermQuery(new Term("data", "6")), true, false);
- q.Add(new TermQuery(new Term("data", "3")), true, false);
- q.Add(new TermQuery(new Term("data", "2")), false, false);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "6")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.SHOULD); //false, false);
q.SetMinimumNumberShouldMatch(2); // 2 of 2 optional
@@ -314,9 +314,9 @@
/* two required, one optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), true, false);
- q.Add(new TermQuery(new Term("data", "3")), false, false);
- q.Add(new TermQuery(new Term("data", "2")), true, false);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "3")), BooleanClause.Occur.SHOULD); //false, false);
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.MUST); //true, false);
q.SetMinimumNumberShouldMatch(1); // 1 of 1 optional
@@ -329,8 +329,8 @@
/* two required, no optional */
BooleanQuery q = new BooleanQuery();
- q.Add(new TermQuery(new Term("all", "all")), true, false);
- q.Add(new TermQuery(new Term("data", "2")), true, false);
+ q.Add(new TermQuery(new Term("all", "all")), BooleanClause.Occur.MUST); //true, false);
+ q.Add(new TermQuery(new Term("data", "2")), BooleanClause.Occur.MUST); //true, false);
q.SetMinimumNumberShouldMatch(1); // 1 of 0 optional
@@ -350,7 +350,7 @@
TestBoolean2.Callback minNrCB = new AnonymousClassCallback(rnd, this);
- int tot = 0;
+
// increase number of iterations for more complete testing
for (int i = 0; i < 1000; i++)
{
@@ -367,7 +367,6 @@
// will not normalize scores.
TopDocs top1 = s.Search(q1, null, 100);
TopDocs top2 = s.Search(q2, null, 100);
- tot += top2.totalHits;
// The constrained query
// should be a superset to the unconstrained query.
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestBooleanOr.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestBooleanOr.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestBooleanOr.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestBooleanOr.cs Thu Aug 17 06:49:26 2006
@@ -138,6 +138,8 @@
[SetUp]
public virtual void SetUp()
{
+ //base.SetUp();
+
//
RAMDirectory rd = new RAMDirectory();
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestConstantScoreRangeQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestConstantScoreRangeQuery.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestConstantScoreRangeQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestConstantScoreRangeQuery.cs Thu Aug 17 06:49:26 2006
@@ -85,12 +85,12 @@
for (int i = 0; i < data.Length; i++)
{
Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
- doc.Add(Field.Keyword("id", System.Convert.ToString(i)));
- doc.Add(Field.Keyword("all", "all"));
+ doc.Add(new Field("id", System.Convert.ToString(i), Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("id",String.valueOf(i)));
+ doc.Add(new Field("all", "all", Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("all","all"));
if (null != data[i])
{
- doc.Add(Field.Text("data", data[i]));
- }
+ doc.Add(new Field("data", data[i], Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("data",data[i]));
+ }
writer.AddDocument(doc);
}
@@ -200,8 +200,8 @@
// ConstantScoreRangeQuery and make sure hte order is the same
BooleanQuery q = new BooleanQuery();
- q.Add(rq, T, F);
- q.Add(Csrq("data", "1", "6", T, T), T, F);
+ q.Add(rq, BooleanClause.Occur.MUST); //T, F);
+ q.Add(Csrq("data", "1", "6", T, T), BooleanClause.Occur.MUST); //T, F);
Hits actual = search.Search(q);
@@ -212,7 +212,10 @@
}
}
- [Test]
+
+
+
+ [Test]
public virtual void TestRangeQueryId()
{
// NOTE: uses index build in *super* SetUp
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestCustomSearcherSort.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestCustomSearcherSort.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestCustomSearcherSort.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestCustomSearcherSort.cs Thu Aug 17 06:49:26 2006
@@ -39,14 +39,47 @@
[TestFixture]
public class TestCustomSearcherSort
{
+ private Directory Index
+ {
+ // create an index for testing
+
+ get
+ {
+ RAMDirectory indexStore = new RAMDirectory();
+ IndexWriter writer = new IndexWriter(indexStore, new StandardAnalyzer(), true);
+ RandomGen random = new RandomGen(this);
+ for (int i = 0; i < INDEX_SIZE; ++i)
+ {
+ // don't decrease; if to low the problem doesn't show up
+ Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
+ if ((i % 5) != 0)
+ {
+ // some documents must not have an entry in the first sort field
+ doc.Add(new Field("publicationDate_", random.GetLuceneDate(), Field.Store.YES, Field.Index.UN_TOKENIZED));
+ }
+ if ((i % 7) == 0)
+ {
+ // some documents to match the query (see below)
+ doc.Add(new Field("content", "test", Field.Store.YES, Field.Index.TOKENIZED));
+ }
+ // every document has a defined 'mandant' field
+ doc.Add(new Field("mandant", System.Convert.ToString(i % 3), Field.Store.YES, Field.Index.UN_TOKENIZED));
+ writer.AddDocument(doc);
+ }
+ writer.Optimize();
+ writer.Close();
+ return indexStore;
+ }
+
+ }
- private Directory index = null;
+ private Directory index = null;
private Query query = null;
// reduced from 20000 to 2000 to speed up test...
private const int INDEX_SIZE = 2000;
- [STAThread]
+ [STAThread]
public static void Main(System.String[] argv)
{
// TestRunner.run(Suite()); // {{Aroush}} how is this done in NUnit?
@@ -57,77 +90,47 @@
return null; // return new NUnit.Core.TestSuite(typeof(TestCustomSearcherSort)); {{Aroush}} how is this done in NUnit?
}
-
- // create an index for testing
- private Directory GetIndex()
- {
- RAMDirectory indexStore = new RAMDirectory();
- IndexWriter writer = new IndexWriter(indexStore, new StandardAnalyzer(), true);
- RandomGen random = new RandomGen(this);
- for (int i = 0; i < INDEX_SIZE; ++i)
- {
- // don't decrease; if to low the problem doesn't show up
- Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
- if ((i % 5) != 0)
- {
- // some documents must not have an entry in the first sort field
- doc.Add(new Field("publicationDate_", random.GetLuceneDate(), Field.Store.YES, Field.Index.UN_TOKENIZED));
- }
- if ((i % 7) == 0)
- {
- // some documents to match the query (see below)
- doc.Add(new Field("content", "test", Field.Store.YES, Field.Index.TOKENIZED));
- }
- // every document has a defined 'mandant' field
- doc.Add(new Field("mandant", System.Convert.ToString(i % 3), Field.Store.YES, Field.Index.UN_TOKENIZED));
- writer.AddDocument(doc);
- }
- writer.Optimize();
- writer.Close();
- return indexStore;
- }
-
- /// <summary> Create index and query for test cases. </summary>
- [SetUp]
+ /// <summary> Create index and query for test cases. </summary>
+ [SetUp]
public virtual void SetUp()
- {
- index = GetIndex();
- query = new TermQuery(new Term("content", "test"));
- }
+ {
+ index = Index;
+ query = new TermQuery(new Term("content", "test"));
+ }
- /// <summary> Run the test using two CustomSearcher instances. </summary>
+ /// <summary> Run the test using two CustomSearcher instances. </summary>
[Test]
public virtual void TestFieldSortCustomSearcher()
- {
- // log("Run testFieldSortCustomSearcher");
- // define the sort criteria
- Sort custSort = new Sort(new SortField[]{new SortField("publicationDate_"), SortField.FIELD_SCORE});
- Searcher searcher = new CustomSearcher(this, index, 2);
- // search and check hits
- MatchHits(searcher, custSort);
- }
- /// <summary> Run the test using one CustomSearcher wrapped by a MultiSearcher. </summary>
- [Test]
+ {
+ // log("Run testFieldSortCustomSearcher");
+ // define the sort criteria
+ Sort custSort = new Sort(new SortField[]{new SortField("publicationDate_"), SortField.FIELD_SCORE});
+ Searcher searcher = new CustomSearcher(this, index, 2);
+ // search and check hits
+ MatchHits(searcher, custSort);
+ }
+ /// <summary> Run the test using one CustomSearcher wrapped by a MultiSearcher. </summary>
+ [Test]
public virtual void TestFieldSortSingleSearcher()
- {
- // log("Run testFieldSortSingleSearcher");
- // define the sort criteria
- Sort custSort = new Sort(new SortField[]{new SortField("publicationDate_"), SortField.FIELD_SCORE});
- Searcher searcher = new MultiSearcher(new Lucene.Net.Search.Searchable[]{new CustomSearcher(this, index, 2)});
- // search and check hits
- MatchHits(searcher, custSort);
- }
- /// <summary> Run the test using two CustomSearcher instances. </summary>
- [Test]
+ {
+ // log("Run testFieldSortSingleSearcher");
+ // define the sort criteria
+ Sort custSort = new Sort(new SortField[]{new SortField("publicationDate_"), SortField.FIELD_SCORE});
+ Searcher searcher = new MultiSearcher(new Lucene.Net.Search.Searchable[]{new CustomSearcher(this, index, 2)});
+ // search and check hits
+ MatchHits(searcher, custSort);
+ }
+ /// <summary> Run the test using two CustomSearcher instances. </summary>
+ [Test]
public virtual void TestFieldSortMultiCustomSearcher()
- {
- // log("Run testFieldSortMultiCustomSearcher");
- // define the sort criteria
- Sort custSort = new Sort(new SortField[]{new SortField("publicationDate_"), SortField.FIELD_SCORE});
- Searcher searcher = new MultiSearcher(new Lucene.Net.Search.Searchable[]{new CustomSearcher(this, index, 0), new CustomSearcher(this, index, 2)});
- // search and check hits
- MatchHits(searcher, custSort);
- }
+ {
+ // log("Run testFieldSortMultiCustomSearcher");
+ // define the sort criteria
+ Sort custSort = new Sort(new SortField[]{new SortField("publicationDate_"), SortField.FIELD_SCORE});
+ Searcher searcher = new MultiSearcher(new Lucene.Net.Search.Searchable[]{new CustomSearcher(this, index, 0), new CustomSearcher(this, index, 2)});
+ // search and check hits
+ MatchHits(searcher, custSort);
+ }
// make sure the documents returned by the search match the expected list
@@ -299,7 +302,9 @@
private TestCustomSearcherSort enclosingInstance;
public TestCustomSearcherSort Enclosing_Instance
{
- get
+ // Just to generate some different Lucene Date strings
+
+ get
{
return enclosingInstance;
}
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestDateFilter.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestDateFilter.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestDateFilter.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestDateFilter.cs Thu Aug 17 06:49:26 2006
@@ -50,8 +50,8 @@
Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
// add time that is in the past
- doc.Add(new Field("datefield", DateField.TimeToString(now - 1000), Field.Store.YES, Field.Index.UN_TOKENIZED));
- doc.Add(new Field("body", "Today is a very sunny day in New York City", Field.Store.YES, Field.Index.TOKENIZED));
+ doc.Add(new Field("datefield", Lucene.Net.Documents.DateTools.TimeToString(now - 1000, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), Field.Store.YES, Field.Index.UN_TOKENIZED));
+ doc.Add(new Field("body", "Today is a very sunny day in New York City", Field.Store.YES, Field.Index.TOKENIZED));
writer.AddDocument(doc);
writer.Optimize();
writer.Close();
@@ -59,10 +59,11 @@
IndexSearcher searcher = new IndexSearcher(indexStore);
// filter that should preserve matches
- DateFilter df1 = DateFilter.Before("datefield", now);
-
- // filter that should discard matches
- DateFilter df2 = DateFilter.Before("datefield", now - 999999);
+ //DateFilter df1 = DateFilter.Before("datefield", now);
+ RangeFilter df1 = new RangeFilter("datefield", Lucene.Net.Documents.DateTools.TimeToString(now - 2000, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), Lucene.Net.Documents.DateTools.TimeToString(now, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), false, true);
+ // filter that should discard matches
+ //DateFilter df2 = DateFilter.Before("datefield", now - 999999);
+ RangeFilter df2 = new RangeFilter("datefield", Lucene.Net.Documents.DateTools.TimeToString(0, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), Lucene.Net.Documents.DateTools.TimeToString(now - 2000, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), true, false);
// search something that doesn't exist with DateFilter
Query query1 = new TermQuery(new Term("body", "NoMatchForThis"));
@@ -106,8 +107,8 @@
Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
// add time that is in the future
- doc.Add(new Field("datefield", DateField.TimeToString(now + 888888), Field.Store.YES, Field.Index.UN_TOKENIZED));
- doc.Add(new Field("body", "Today is a very sunny day in New York City", Field.Store.YES, Field.Index.TOKENIZED));
+ doc.Add(new Field("datefield", Lucene.Net.Documents.DateTools.TimeToString(now + 888888, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), Field.Store.YES, Field.Index.UN_TOKENIZED));
+ doc.Add(new Field("body", "Today is a very sunny day in New York City", Field.Store.YES, Field.Index.TOKENIZED));
writer.AddDocument(doc);
writer.Optimize();
writer.Close();
@@ -115,10 +116,11 @@
IndexSearcher searcher = new IndexSearcher(indexStore);
// filter that should preserve matches
- DateFilter df1 = DateFilter.After("datefield", now);
-
- // filter that should discard matches
- DateFilter df2 = DateFilter.After("datefield", now + 999999);
+ //DateFilter df1 = DateFilter.After("datefield", now);
+ RangeFilter df1 = new RangeFilter("datefield", Lucene.Net.Documents.DateTools.TimeToString(now, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), Lucene.Net.Documents.DateTools.TimeToString(now + 999999, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), true, false);
+ // filter that should discard matches
+ //DateFilter df2 = DateFilter.After("datefield", now + 999999);
+ RangeFilter df2 = new RangeFilter("datefield", Lucene.Net.Documents.DateTools.TimeToString(now + 999999, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), Lucene.Net.Documents.DateTools.TimeToString(now + 999999999, Lucene.Net.Documents.DateTools.Resolution.MILLISECOND), false, true);
// search something that doesn't exist with DateFilter
Query query1 = new TermQuery(new Term("body", "NoMatchForThis"));
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestDisjunctionMaxQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestDisjunctionMaxQuery.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestDisjunctionMaxQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestDisjunctionMaxQuery.cs Thu Aug 17 06:49:26 2006
@@ -98,39 +98,39 @@
// d1 is an "ok" match for: albino elephant
{
Lucene.Net.Documents.Document d1 = new Lucene.Net.Documents.Document();
- d1.Add(Field.Keyword("id", "d1"));
- d1.Add(Field.Text("hed", "elephant"));
- d1.Add(Field.Text("dek", "elephant"));
- writer.AddDocument(d1);
+ d1.Add(new Field("id", "d1", Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("id", "d1"));
+ d1.Add(new Field("hed", "elephant", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("hed", "elephant"));
+ d1.Add(new Field("dek", "elephant", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("dek", "elephant"));
+ writer.AddDocument(d1);
}
// d2 is a "good" match for: albino elephant
{
Lucene.Net.Documents.Document d2 = new Lucene.Net.Documents.Document();
- d2.Add(Field.Keyword("id", "d2"));
- d2.Add(Field.Text("hed", "elephant"));
- d2.Add(Field.Text("dek", "albino"));
- d2.Add(Field.Text("dek", "elephant"));
- writer.AddDocument(d2);
+ d2.Add(new Field("id", "d2", Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("id", "d2"));
+ d2.Add(new Field("hed", "elephant", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("hed", "elephant"));
+ d2.Add(new Field("dek", "albino", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("dek", "albino"));
+ d2.Add(new Field("dek", "elephant", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("dek", "elephant"));
+ writer.AddDocument(d2);
}
// d3 is a "better" match for: albino elephant
{
Lucene.Net.Documents.Document d3 = new Lucene.Net.Documents.Document();
- d3.Add(Field.Keyword("id", "d3"));
- d3.Add(Field.Text("hed", "albino"));
- d3.Add(Field.Text("hed", "elephant"));
- writer.AddDocument(d3);
+ d3.Add(new Field("id", "d3", Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("id", "d3"));
+ d3.Add(new Field("hed", "albino", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("hed", "albino"));
+ d3.Add(new Field("hed", "elephant", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("hed", "elephant"));
+ writer.AddDocument(d3);
}
// d4 is the "best" match for: albino elephant
{
Lucene.Net.Documents.Document d4 = new Lucene.Net.Documents.Document();
- d4.Add(Field.Keyword("id", "d4"));
- d4.Add(Field.Text("hed", "albino"));
- d4.Add(Field.Text("hed", "elephant"));
- d4.Add(Field.Text("dek", "albino"));
- writer.AddDocument(d4);
+ d4.Add(new Field("id", "d4", Field.Store.YES, Field.Index.UN_TOKENIZED)); //Field.Keyword("id", "d4"));
+ d4.Add(new Field("hed", "albino", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("hed", "albino"));
+ d4.Add(new Field("hed", "elephant", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("hed", "elephant"));
+ d4.Add(new Field("dek", "albino", Field.Store.YES, Field.Index.TOKENIZED)); //Field.Text("dek", "albino"));
+ writer.AddDocument(d4);
}
writer.Close();
@@ -257,14 +257,14 @@
DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.0f);
q1.Add(Tq("hed", "albino"));
q1.Add(Tq("dek", "albino"));
- q.Add(q1, true, false);
- }
+ q.Add(q1, BooleanClause.Occur.SHOULD); //false,false);
+ }
{
DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.0f);
q2.Add(Tq("hed", "elephant"));
q2.Add(Tq("dek", "elephant"));
- q.Add(q2, true, false);
- }
+ q.Add(q2, BooleanClause.Occur.SHOULD); //false,false);
+ }
Hits h = s.Search(q);
@@ -294,14 +294,14 @@
DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.0f);
q1.Add(Tq("hed", "albino"));
q1.Add(Tq("dek", "albino"));
- q.Add(q1, false, false);
- }
+ q.Add(q1, BooleanClause.Occur.SHOULD); //false,false);
+ }
{
DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.0f);
q2.Add(Tq("hed", "elephant"));
q2.Add(Tq("dek", "elephant"));
- q.Add(q2, false, false);
- }
+ q.Add(q2, BooleanClause.Occur.SHOULD); //false,false);
+ }
Hits h = s.Search(q);
@@ -335,14 +335,14 @@
DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.01f);
q1.Add(Tq("hed", "albino"));
q1.Add(Tq("dek", "albino"));
- q.Add(q1, false, false);
- }
+ q.Add(q1, BooleanClause.Occur.SHOULD); //false,false);
+ }
{
DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.01f);
q2.Add(Tq("hed", "elephant"));
q2.Add(Tq("dek", "elephant"));
- q.Add(q2, false, false);
- }
+ q.Add(q2, BooleanClause.Occur.SHOULD); //false,false);
+ }
Hits h = s.Search(q);
@@ -387,14 +387,14 @@
DisjunctionMaxQuery q1 = new DisjunctionMaxQuery(0.01f);
q1.Add(Tq("hed", "albino", 1.5f));
q1.Add(Tq("dek", "albino"));
- q.Add(q1, false, false);
- }
+ q.Add(q1, BooleanClause.Occur.SHOULD); //false,false);
+ }
{
DisjunctionMaxQuery q2 = new DisjunctionMaxQuery(0.01f);
q2.Add(Tq("hed", "elephant", 1.5f));
q2.Add(Tq("dek", "elephant"));
- q.Add(q2, false, false);
- }
+ q.Add(q2, BooleanClause.Occur.SHOULD); //false,false);
+ }
Hits h = s.Search(q);
@@ -459,8 +459,8 @@
{
Lucene.Net.Documents.Document d = h.Doc(i);
float score = h.Score(i);
- System.Console.Error.WriteLine("#" + i + ": {0.000000000}" + score + " - " + d.Get("id"));
- }
+ System.Console.Error.WriteLine("#" + i + ": {0.000000000}" + score + " - " + d.Get("id"));
+ }
}
}
}
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestMatchAllDocsQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestMatchAllDocsQuery.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestMatchAllDocsQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestMatchAllDocsQuery.cs Thu Aug 17 06:49:26 2006
@@ -63,7 +63,7 @@
Assert.AreEqual(1, hits.Length());
// delete a document:
- is_Renamed.GetIndexReader().Delete(0);
+ is_Renamed.GetIndexReader().DeleteDocument(0);
hits = is_Renamed.Search(new MatchAllDocsQuery());
Assert.AreEqual(2, hits.Length());
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestMultiSearcher.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestMultiSearcher.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestMultiSearcher.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestMultiSearcher.cs Thu Aug 17 06:49:26 2006
@@ -92,7 +92,8 @@
writerB.Close();
// creating the query
- Query query = Lucene.Net.QueryParsers.QueryParser.Parse("handle:1", "fulltext", new StandardAnalyzer());
+ Lucene.Net.QueryParsers.QueryParser parser = new Lucene.Net.QueryParsers.QueryParser("fulltext", new StandardAnalyzer());
+ Query query = parser.Parse("handle:1");
// building the searchables
Searcher[] searchers = new Searcher[2];
@@ -151,7 +152,7 @@
// deleting the document just added, this will cause a different exception to take place
Term term = new Term("id", "doc1");
IndexReader readerB = IndexReader.Open(indexStoreB);
- readerB.Delete(term);
+ readerB.DeleteDocuments(term);
readerB.Close();
// optimizing the index with the writer
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestMultiSearcherRanking.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestMultiSearcherRanking.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestMultiSearcherRanking.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestMultiSearcherRanking.cs Thu Aug 17 06:49:26 2006
@@ -105,8 +105,9 @@
// check result hit ranking
if (verbose)
System.Console.Out.WriteLine("Query: " + queryStr);
- Query query = Lucene.Net.QueryParsers.QueryParser.Parse(queryStr, FIELD_NAME, new StandardAnalyzer());
- Hits multiSearcherHits = multiSearcher.Search(query);
+ Lucene.Net.QueryParsers.QueryParser queryParser = new Lucene.Net.QueryParsers.QueryParser(FIELD_NAME, new StandardAnalyzer());
+ Lucene.Net.Search.Query query = queryParser.Parse(queryStr);
+ Hits multiSearcherHits = multiSearcher.Search(query);
Hits singleSearcherHits = singleSearcher.Search(query);
Assert.AreEqual(multiSearcherHits.Length(), singleSearcherHits.Length());
for (int i = 0; i < multiSearcherHits.Length(); i++)
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestNot.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestNot.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestNot.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestNot.cs Thu Aug 17 06:49:26 2006
@@ -51,8 +51,9 @@
writer.Close();
Searcher searcher = new IndexSearcher(store);
- Query query = Lucene.Net.QueryParsers.QueryParser.Parse("a NOT b", "field", new SimpleAnalyzer());
- //System.out.println(query);
+ Lucene.Net.QueryParsers.QueryParser parser = new Lucene.Net.QueryParsers.QueryParser("field", new SimpleAnalyzer());
+ Lucene.Net.Search.Query query = parser.Parse("a NOT b");
+ //System.out.println(query);
Hits hits = searcher.Search(query);
Assert.AreEqual(0, hits.Length());
}
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestPhrasePrefixQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestPhrasePrefixQuery.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestPhrasePrefixQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestPhrasePrefixQuery.cs Thu Aug 17 06:49:26 2006
@@ -65,9 +65,11 @@
IndexSearcher searcher = new IndexSearcher(indexStore);
- PhrasePrefixQuery query1 = new PhrasePrefixQuery();
- PhrasePrefixQuery query2 = new PhrasePrefixQuery();
- query1.Add(new Term("body", "blueberry"));
+ //PhrasePrefixQuery query1 = new PhrasePrefixQuery();
+ MultiPhraseQuery query1 = new MultiPhraseQuery();
+ //PhrasePrefixQuery query2 = new PhrasePrefixQuery();
+ MultiPhraseQuery query2 = new MultiPhraseQuery();
+ query1.Add(new Term("body", "blueberry"));
query2.Add(new Term("body", "strawberry"));
System.Collections.ArrayList termsWithPrefix = new System.Collections.ArrayList();
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestPhraseQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestPhraseQuery.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestPhraseQuery.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestPhraseQuery.cs Thu Aug 17 06:49:26 2006
@@ -79,8 +79,6 @@
[SetUp]
public virtual void SetUp()
{
- System.Console.Out.WriteLine("Setup()");
-
directory = new RAMDirectory();
Analyzer analyzer = new AnonymousClassAnalyzer(this);
IndexWriter writer = new IndexWriter(directory, analyzer, true);
@@ -102,8 +100,6 @@
[TearDown]
public virtual void TearDown()
{
- System.Console.Out.WriteLine("TearDown()");
-
searcher.Close();
directory.Close();
}
@@ -111,8 +107,6 @@
[Test]
public virtual void TestNotCloseEnough()
{
- System.Console.Out.WriteLine("TestNotCloseEnough()");
-
query.SetSlop(2);
query.Add(new Term("field", "one"));
query.Add(new Term("field", "five"));
@@ -123,8 +117,6 @@
[Test]
public virtual void TestBarelyCloseEnough()
{
- System.Console.Out.WriteLine("TestBarelyCloseEnough()");
-
query.SetSlop(3);
query.Add(new Term("field", "one"));
query.Add(new Term("field", "five"));
@@ -136,8 +128,6 @@
[Test]
public virtual void TestExact()
{
- System.Console.Out.WriteLine("TestExact()");
-
// slop is zero by default
query.Add(new Term("field", "four"));
query.Add(new Term("field", "five"));
@@ -154,8 +144,6 @@
[Test]
public virtual void TestSlop1()
{
- System.Console.Out.WriteLine("TestSlop1()");
-
// Ensures slop of 1 works with terms in order.
query.SetSlop(1);
query.Add(new Term("field", "one"));
@@ -177,8 +165,6 @@
[Test]
public virtual void TestOrderDoesntMatter()
{
- System.Console.Out.WriteLine("TestOrderDoesntMatter()");
-
query.SetSlop(2); // must be at least two for reverse order match
query.Add(new Term("field", "two"));
query.Add(new Term("field", "one"));
@@ -199,8 +185,6 @@
[Test]
public virtual void TestMulipleTerms()
{
- System.Console.Out.WriteLine("TestMulipleTerms()");
-
query.SetSlop(2);
query.Add(new Term("field", "one"));
query.Add(new Term("field", "three"));
@@ -224,8 +208,6 @@
[Test]
public virtual void TestPhraseQueryWithStopAnalyzer()
{
- System.Console.Out.WriteLine("TestPhraseQueryWithStopAnalyzer()");
-
RAMDirectory directory = new RAMDirectory();
StopAnalyzer stopAnalyzer = new StopAnalyzer();
IndexWriter writer = new IndexWriter(directory, stopAnalyzer, true);
@@ -256,8 +238,6 @@
[Test]
public virtual void TestPhraseQueryInConjunctionScorer()
{
- System.Console.Out.WriteLine("TestPhraseQueryInConjunctionScorer()");
-
RAMDirectory directory = new RAMDirectory();
IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true);
@@ -337,8 +317,6 @@
[Test]
public virtual void TestSlopScoring()
{
- System.Console.Out.WriteLine("TestSlopScoring()");
-
Directory directory = new RAMDirectory();
IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true);
@@ -377,8 +355,6 @@
[Test]
public virtual void TestWrappedPhrase()
{
- System.Console.Out.WriteLine("TestWrappedPhrase()");
-
query.Add(new Term("repeated", "first"));
query.Add(new Term("repeated", "part"));
query.Add(new Term("repeated", "second"));
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestRemoteSearchable.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestRemoteSearchable.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestRemoteSearchable.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestRemoteSearchable.cs Thu Aug 17 06:49:26 2006
@@ -114,5 +114,15 @@
Hits nohits = searcher.Search(new TermQuery(new Term("test", "text")), new QueryFilter(new TermQuery(new Term("test", "non-existent-term"))));
Assert.AreEqual(0, nohits.Length());
}
- }
+
+ [Test]
+ public virtual void TestConstantScoreQuery()
+ {
+ // try to search the published index
+ Lucene.Net.Search.Searchable[] searchables = new Lucene.Net.Search.Searchable[]{GetRemote()};
+ Searcher searcher = new MultiSearcher(searchables);
+ Hits hits = searcher.Search(new ConstantScoreQuery(new QueryFilter(new TermQuery(new Term("test", "test")))));
+ Assert.AreEqual(1, hits.Length());
+ }
+ }
}
Modified: incubator/lucene.net/trunk/C#/src/Test/Search/TestSort.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Search/TestSort.cs?rev=432239&r1=432238&r2=432239&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Search/TestSort.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Search/TestSort.cs Thu Aug 17 06:49:26 2006
@@ -120,13 +120,14 @@
}
- // document data:
- // the tracer field is used to determine which document was hit
- // the contents field is used to search and sort by relevance
- // the int field to sort by int
- // the float field to sort by float
- // the string field to sort by string
- private System.String[][] data = new System.String[][]{new System.String[]{"A", "x a", "5", "4f", "c", "A-3"}, new System.String[]{"B", "y a", "5", "3.4028235E38", "i", "B-10"}, new System.String[]{"C", "x a b c", "2147483647", "1.0", "j", "A-2"}, new System.String[]{"D", "y a b c", "-1", "0.0f", "a", "C-0"}, new System.String[]{"E", "x a b c d", "5", "2f", "h", "B-8"}, new System.String[]{"F", "y a b c d", "2", "3.14159f", "g", "B-1"}, new System.String[]{"G", "x a b c d", "3", "-1.0", "f", "C-100"}, new System.String[]{"H", "y a b c d", "0", "1.4E-45", "e", "C-88"}, new System.String[]{"I", "x a b c d e f", "-2147483648", "1.0e+0", "d", "A-10"}, new System.String[]{"J", "y a b c d e f", "4", ".5", "b", "C-7"}, new System.String[]{"W", "g", "1", null, null, null}, new System.String[]{"X", "g", "1", "0.1", null, null}, new System.String[]{"Y", "g", "1", "0.2", null, null}, new System.String[]{"Z", "f g", null, null, null, null}};
+ // document data:
+ // the tracer field is used to determine which document was hit
+ // the contents field is used to search and sort by relevance
+ // the int field to sort by int
+ // the float field to sort by float
+ // the string field to sort by string
+ // the i18n field includes accented characters for testing locale-specific sorting
+ private System.String[][] data = new System.String[][]{new System.String[]{"A", "x a", "5", "4f", "c", "A-3", "p\u00EAche"}, new System.String[]{"B", "y a", "5", "3.4028235E38", "i", "B-10", "HAT"}, new System.String[]{"C", "x a b c", "2147483647", "1.0", "j", "A-2", "p\u00E9ch\u00E9"}, new System.String[]{"D", "y a b c", "-1", "0.0f", "a", "C-0", "HUT"}, new System.String[]{"E", "x a b c d", "5", "2f", "h", "B-8", "peach"}, new System.String[]{"F", "y a b c d", "2", "3.14159f", "g", "B-1", "H\u00C5T"}, new System.String[]{"G", "x a b c d", "3", "-1.0", "f", "C-100", "sin"}, new System.String[]{"H", "y a b c d", "0", "1.4E-45", "e", "C-88", "H\u00D8T"}, new System.String[]{"I", "x a b c d e f", "-2147483648", "1.0e+0", "d", "A-10", "s\u00EDn"}, new System.String[]{"J", "y a b c d e f", "4", ".5", "b", "C-7", "HOT"}, new System.String[]{"W", "g", "1", null, null, null, null}, new System.String[]{"X", "g", "1", "0.1", null, null, null}, new System.String[]{"Y", "g", "1
", "0.2", null, null, null}, new System.String[]{"Z", "f g", null, null, null, null, null}};
// create an index of all the documents, or just the x, or just the y documents
private Searcher GetIndex(bool even, bool odd)
@@ -148,7 +149,9 @@
doc.Add(new Field("string", data[i][4], Field.Store.NO, Field.Index.UN_TOKENIZED));
if (data[i][5] != null)
doc.Add(new Field("custom", data[i][5], Field.Store.NO, Field.Index.UN_TOKENIZED));
- doc.SetBoost(2); // produce some scores above 1.0
+ if (data[i][6] != null)
+ doc.Add(new Field("i18n", data[i][6], Field.Store.NO, Field.Index.UN_TOKENIZED));
+ doc.SetBoost(2); // produce some scores above 1.0
writer.AddDocument(doc);
}
}
@@ -369,7 +372,45 @@
AssertMatches(full, queryY, sort, "BFHJD");
}
- // test a custom sort function
+ // test using various international locales with accented characters
+ // (which sort differently depending on locale)
+ [Test]
+ public virtual void TestInternationalSort()
+ {
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("en-US")));
+ AssertMatches(full, queryY, sort, "BFJDH");
+
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("sv" + "-" + "se")));
+ AssertMatches(full, queryY, sort, "BJDFH");
+
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("da" + "-" + "dk")));
+ AssertMatches(full, queryY, sort, "BJDHF");
+
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("en-US")));
+ AssertMatches(full, queryX, sort, "ECAGI");
+
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("fr-FR")));
+ AssertMatches(full, queryX, sort, "EACGI");
+ }
+
+ // Test the MultiSearcher's ability to preserve locale-sensitive ordering
+ // by wrapping it around a single searcher
+ [Test]
+ public virtual void TestInternationalMultiSearcherSort()
+ {
+ Searcher multiSearcher = new MultiSearcher(new Lucene.Net.Search.Searchable[]{full});
+
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("sv" + "-" + "se")));
+ AssertMatches(multiSearcher, queryY, sort, "BJDFH");
+
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("en-US")));
+ AssertMatches(multiSearcher, queryY, sort, "BFJDH");
+
+ sort.SetSort(new SortField("i18n", new System.Globalization.CultureInfo("da" + "-" + "dk")));
+ AssertMatches(multiSearcher, queryY, sort, "BJDHF");
+ }
+
+ // test a custom sort function
[Test]
public virtual void TestCustomSorts()
{