You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by di...@apache.org on 2009/12/08 01:13:08 UTC

svn commit: r888198 - in /incubator/lucene.net/trunk/C#/src: Lucene.Net/Search/FieldDoc.cs Lucene.Net/Search/Searcher.cs Test/TestSupportClass.cs

Author: digy
Date: Tue Dec  8 00:13:07 2009
New Revision: 888198

URL: http://svn.apache.org/viewvc?rev=888198&view=rev
Log:
A new test case for LUCENENET-100 + patches

Modified:
    incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/FieldDoc.cs
    incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/Searcher.cs
    incubator/lucene.net/trunk/C#/src/Test/TestSupportClass.cs

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/FieldDoc.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/FieldDoc.cs?rev=888198&r1=888197&r2=888198&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/FieldDoc.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/FieldDoc.cs Tue Dec  8 00:13:07 2009
@@ -56,6 +56,7 @@
 		/// </seealso>
 		/// <seealso cref="Searcher.Search(Query,Filter,int,Sort)">
 		/// </seealso>
+        [NonSerialized]
 		public System.IComparable[] fields;
 		
 		/// <summary>Expert: Creates one of these objects with empty sort information. </summary>

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/Searcher.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Search/Searcher.cs?rev=888198&r1=888197&r2=888198&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/Searcher.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Search/Searcher.cs Tue Dec  8 00:13:07 2009
@@ -31,7 +31,7 @@
 	/// Note that you can only access hits from a Searcher as long as it is not yet
 	/// closed, otherwise an IOException will be thrown.
 	/// </summary>
-	public abstract class Searcher : Searchable
+	public abstract class Searcher : System.MarshalByRefObject, Searchable
 	{
 		public Searcher()
 		{

Modified: incubator/lucene.net/trunk/C#/src/Test/TestSupportClass.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/TestSupportClass.cs?rev=888198&r1=888197&r2=888198&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/TestSupportClass.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/TestSupportClass.cs Tue Dec  8 00:13:07 2009
@@ -61,27 +61,27 @@
         }
     }
 
-/// <summary>
-/// </summary>
-	[TestFixture]
-	public class TestSupportClass
-	{
-		/// <summary></summary>
-		/// <throws></throws>
-		[Test]
-		public virtual void TestCRC32()
-		{
-			byte[] b = new byte[256];
-			for (int i = 0; i < b.Length; i++)
-				b[i] = (byte)i;
-
-			SupportClass.Checksum digest = new SupportClass.CRC32();
-			digest.Update(b, 0, b.Length);
-
-			Int64 expected = 688229491;
-			Assert.AreEqual(expected, digest.GetValue());
-		}
-	}
+    /// <summary>
+    /// </summary>
+    [TestFixture]
+    public class TestSupportClass
+    {
+        /// <summary></summary>
+        /// <throws></throws>
+        [Test]
+        public virtual void TestCRC32()
+        {
+            byte[] b = new byte[256];
+            for (int i = 0; i < b.Length; i++)
+                b[i] = (byte)i;
+
+            SupportClass.Checksum digest = new SupportClass.CRC32();
+            digest.Update(b, 0, b.Length);
+
+            Int64 expected = 688229491;
+            Assert.AreEqual(expected, digest.GetValue());
+        }
+    }
 
     [TestFixture]
     public class TestWeakHashTable
@@ -145,7 +145,7 @@
         [Test]
         public void B_TestOutOfMemory()
         {
-            IDictionary wht = TestWeakHashTableBehavior.CreateDictionary(); 
+            IDictionary wht = TestWeakHashTableBehavior.CreateDictionary();
             int OOMECount = 0;
 
             for (int i = 0; i < 1024 * 24 + 32; i++) // total requested Mem. > 24GB
@@ -153,7 +153,7 @@
                 try
                 {
                     wht.Add(new BigObject(i), i);
-                    if(i%1024==0) Console.WriteLine("Requested Mem: " + i.ToString() + " MB");
+                    if (i % 1024 == 0) Console.WriteLine("Requested Mem: " + i.ToString() + " MB");
                     OOMECount = 0;
                 }
                 catch (OutOfMemoryException oom)
@@ -752,7 +752,7 @@
             Lucene.Net.Search.BooleanQuery queryPreSerialized = new Lucene.Net.Search.BooleanQuery();
             queryPreSerialized.Add(new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("country", "Russia")), Lucene.Net.Search.BooleanClause.Occur.MUST);
             queryPreSerialized.Add(new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("country", "France")), Lucene.Net.Search.BooleanClause.Occur.MUST);
-            
+
             //now serialize it 
             System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
             System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
@@ -761,7 +761,7 @@
             //now deserialize 
             memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
             Lucene.Net.Search.BooleanQuery queryPostSerialized = (Lucene.Net.Search.BooleanQuery)serializer.Deserialize(memoryStream);
-            
+
             memoryStream.Close();
 
             Assert.AreEqual(queryPreSerialized, queryPostSerialized, "See the issue: LUCENENET-170");
@@ -775,7 +775,7 @@
             Lucene.Net.Store.RAMDirectory ramDIR = new Lucene.Net.Store.RAMDirectory();
 
             //Index 1 Doc
-            Lucene.Net.Index.IndexWriter wr = new Lucene.Net.Index.IndexWriter(ramDIR, new Lucene.Net.Analysis.WhitespaceAnalyzer(),true);
+            Lucene.Net.Index.IndexWriter wr = new Lucene.Net.Index.IndexWriter(ramDIR, new Lucene.Net.Analysis.WhitespaceAnalyzer(), true);
             Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
             doc.Add(new Lucene.Net.Documents.Field("field1", "value1 value11", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.TOKENIZED));
             wr.AddDocument(doc);
@@ -800,15 +800,15 @@
             doc.Add(new Lucene.Net.Documents.Field("field1", "value1 value11", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.TOKENIZED));
             wr.AddDocument(doc);
             wr.Close();
-            
+
             //Search
             Lucene.Net.Search.IndexSearcher s = new Lucene.Net.Search.IndexSearcher(ramDIR2);
             Lucene.Net.QueryParsers.QueryParser qp = new Lucene.Net.QueryParsers.QueryParser("field1", new Lucene.Net.Analysis.Standard.StandardAnalyzer());
             Lucene.Net.Search.Query q = qp.Parse("value1");
-            Lucene.Net.Search.TopDocs topDocs = s.Search(q,100);
+            Lucene.Net.Search.TopDocs topDocs = s.Search(q, 100);
             s.Close();
 
-            Assert.AreEqual(topDocs.totalHits, 2,"See the issue: LUCENENET-174");
+            Assert.AreEqual(topDocs.totalHits, 2, "See the issue: LUCENENET-174");
         }
 
 
@@ -853,7 +853,88 @@
                 return char.IsLetterOrDigit(c);
             }
         }
+
+
+        //-------------------------------------------
+        [Test]
+        [Description("LUCENENET-100")]
+        public void Lucene_Net_Search_FieldDoc()
+        {
+            try
+            {
+                LUCENENET_100_CreateIndex();
+
+                System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(new System.Runtime.Remoting.Channels.Tcp.TcpChannel(38085));
+
+                Lucene.Net.Search.IndexSearcher indexSearcher = new Lucene.Net.Search.IndexSearcher(LUCENENET_100_Dir);
+                System.Runtime.Remoting.RemotingServices.Marshal(indexSearcher, "Searcher");
+
+                LUCENENET_100_ClientSearch();
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+            }
+
+            //Wait Client to finish
+            while (LUCENENET_100_testFinished == false) System.Threading.Thread.Sleep(10);
+
+            if (LUCENENET_100_Exception != null) throw LUCENENET_100_Exception;
+
+        }
+
+        Lucene.Net.Store.RAMDirectory LUCENENET_100_Dir = new Lucene.Net.Store.RAMDirectory();
+        bool LUCENENET_100_testFinished = false;
+        Exception LUCENENET_100_Exception = null;
+
+
+        void LUCENENET_100_ClientSearch()
+        {
+            try
+            {
+                Lucene.Net.Search.Searchable s = (Lucene.Net.Search.Searchable)Activator.GetObject(typeof(Lucene.Net.Search.Searchable), @"tcp://localhost:38085/Searcher");
+                Lucene.Net.Search.MultiSearcher searcher = new Lucene.Net.Search.MultiSearcher(new Lucene.Net.Search.Searchable[] { s });
+
+                Lucene.Net.Search.Query q = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("field1", "moon"));
+
+                Lucene.Net.Search.Sort sort = new Lucene.Net.Search.Sort();
+                sort.SetSort(new Lucene.Net.Search.SortField("field2", Lucene.Net.Search.SortField.INT));
+
+                Lucene.Net.Search.Hits h = searcher.Search(q, sort);
+            }
+            catch (Exception ex)
+            {
+                LUCENENET_100_Exception = ex;
+            }
+            finally
+            {
+                LUCENENET_100_testFinished = true;
+            }
+        }
+
+        void LUCENENET_100_CreateIndex()
+        {
+            Lucene.Net.Index.IndexWriter w = new Lucene.Net.Index.IndexWriter(LUCENENET_100_Dir, new Lucene.Net.Analysis.Standard.StandardAnalyzer(), true);
+
+            Lucene.Net.Documents.Field f1 = new Lucene.Net.Documents.Field("field1", "dark side of the moon", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.TOKENIZED);
+            Lucene.Net.Documents.Field f2 = new Lucene.Net.Documents.Field("field2", "123", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.UN_TOKENIZED);
+            Lucene.Net.Documents.Document d = new Lucene.Net.Documents.Document();
+            d.Add(f1);
+            d.Add(f2);
+            w.AddDocument(d);
+
+            f1 = new Lucene.Net.Documents.Field("field1", "Fly me to the moon", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.TOKENIZED);
+            f2 = new Lucene.Net.Documents.Field("field2", "456", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.UN_TOKENIZED);
+            d = new Lucene.Net.Documents.Document();
+            d.Add(f1);
+            d.Add(f2);
+            w.AddDocument(d);
+
+            w.Close();
+        }
+
         //-------------------------------------------
 
+
     }
 }
\ No newline at end of file