public void ProxyObjectInheritance() { // This will test subclassed proxy objects and make sure that they are index correctly. IFullTextSession s = Search.CreateFullTextSession(OpenSession()); ITransaction tx = s.BeginTransaction(); // Create an object in db Mammal temp = new Mammal(); temp.NumberOfLegs = (4); temp.Name = ("Some Mammal Name Here"); s.Save(temp); tx.Commit(); //post commit events for lucene // Clear object from cache by clearing session s.Clear(); // This should return a proxied object Mammal mammal = s.Load <Mammal>(temp.Id); // Index the proxied object s.Index(mammal); // Build an index reader var reader = s.SearchFactory.ReaderProvider.OpenReader(s.SearchFactory.GetDirectoryProviders(typeof(Mammal))); // Get the last document indexed var Document = reader.Document(reader.MaxDoc() - 1); // get the class name field from the document string classTypeThatWasIndex = Document.Get(NHibernate.Search.Engine.DocumentBuilder.CLASS_FIELDNAME); // get the expected lucene type name (this should be equivilent to // the static method of NHibernate.Search.Util.TypeHelper.LuceneTypeName string expectedLuceneTypeName = typeof(Mammal).FullName + ", " + typeof(Mammal).Assembly.GetName().Name; Assert.AreEqual(expectedLuceneTypeName, classTypeThatWasIndex); // Tidyup tx = s.BeginTransaction(); s.Delete("from System.Object"); tx.Commit(); s.Close(); }
public void ProxyObjectInheritance() { // This will test subclassed proxy objects and make sure that they are index correctly. IFullTextSession s = Search.CreateFullTextSession(OpenSession()); ITransaction tx = s.BeginTransaction(); // Create an object in db Mammal temp = new Mammal(); temp.NumberOfLegs = (4); temp.Name = ("Some Mammal Name Here"); s.Save(temp); tx.Commit(); //post commit events for lucene // Clear object from cache by clearing session s.Clear(); // This should return a proxied object Mammal mammal = s.Load<Mammal>(temp.Id); // Index the proxied object s.Index(mammal); // Build an index reader var reader = s.SearchFactory.ReaderProvider.OpenReader(s.SearchFactory.GetDirectoryProviders(typeof(Mammal))); // Get the last document indexed var Document = reader.Document(reader.MaxDoc() - 1); // get the class name field from the document string classTypeThatWasIndex = Document.Get(NHibernate.Search.Engine.DocumentBuilder.CLASS_FIELDNAME); // get the expected lucene type name (this should be equivilent to // the static method of NHibernate.Search.Util.TypeHelper.LuceneTypeName string expectedLuceneTypeName = typeof(Mammal).FullName + ", " + typeof(Mammal).Assembly.GetName().Name; Assert.AreEqual(expectedLuceneTypeName, classTypeThatWasIndex); // Tidyup tx = s.BeginTransaction(); s.Delete("from System.Object"); tx.Commit(); s.Close(); }
public void Inheritance() { IFullTextSession s = Search.CreateFullTextSession(OpenSession()); ITransaction tx = s.BeginTransaction(); Animal a = new Animal(); a.Name = ("Shark Jr"); s.Save(a); Mammal m = new Mammal(); m.NumberOfLegs = (4); m.Name = ("Elephant Jr"); s.Save(m); tx.Commit(); //post commit events for lucene s.Clear(); tx = s.BeginTransaction(); QueryParser parser = new QueryParser(Environment.LuceneVersion, "Name", new StopAnalyzer(Environment.LuceneVersion)); Lucene.Net.Search.Query query = parser.Parse("Elephant"); IQuery hibQuery = s.CreateFullTextQuery(query, typeof(Mammal)); IList result = hibQuery.List(); Assert.IsNotEmpty(result); Assert.AreEqual(1, result.Count, "Query subclass by superclass attribute"); query = parser.Parse("NumberOfLegs:[4 TO 4]"); hibQuery = s.CreateFullTextQuery(query, typeof(Animal), typeof(Mammal)); result = hibQuery.List(); Assert.IsNotEmpty(result); Assert.AreEqual(1, result.Count, "Query subclass by subclass attribute"); query = parser.Parse("Jr"); hibQuery = s.CreateFullTextQuery(query, typeof(Animal)); result = hibQuery.List(); Assert.IsNotEmpty(result); Assert.AreEqual(2, result.Count, "Query filtering on superclass return mapped subclasses"); foreach (Object managedEntity in result) { s.Delete(managedEntity); } tx.Commit(); s.Close(); }
public void Inheritance() { IFullTextSession s = Search.CreateFullTextSession(OpenSession()); ITransaction tx = s.BeginTransaction(); Animal a = new Animal(); a.Name = ("Shark Jr"); s.Save(a); Mammal m = new Mammal(); m.NumberOfLegs = (4); m.Name = ("Elephant Jr"); s.Save(m); tx.Commit(); //post commit events for lucene s.Clear(); tx = s.BeginTransaction(); QueryParser parser = new QueryParser("Name", new StopAnalyzer()); Lucene.Net.Search.Query query = parser.Parse("Elephant"); IQuery hibQuery = s.CreateFullTextQuery(query, typeof(Mammal)); IList result = hibQuery.List(); Assert.IsNotEmpty(result); Assert.AreEqual(1, result.Count, "Query subclass by superclass attribute"); query = parser.Parse("NumberOfLegs:[4 TO 4]"); hibQuery = s.CreateFullTextQuery(query, typeof(Animal), typeof(Mammal)); result = hibQuery.List(); Assert.IsNotEmpty(result); Assert.AreEqual(1, result.Count, "Query subclass by subclass attribute"); query = parser.Parse("Jr"); hibQuery = s.CreateFullTextQuery(query, typeof(Animal)); result = hibQuery.List(); Assert.IsNotEmpty(result); Assert.AreEqual(2, result.Count, "Query filtering on superclass return mapped subclasses"); foreach (Object managedEntity in result) s.Delete(managedEntity); tx.Commit(); s.Close(); }