[hibernate-commits] Hibernate SVN: r14331 - in search/trunk/src: java/org/hibernate/search/engine and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Feb 12 12:02:11 EST 2008


Author: epbernard
Date: 2008-02-12 12:02:10 -0500 (Tue, 12 Feb 2008)
New Revision: 14331

Modified:
   search/trunk/src/java/org/hibernate/search/ProjectionConstants.java
   search/trunk/src/java/org/hibernate/search/engine/DocumentExtractor.java
   search/trunk/src/test/org/hibernate/search/test/query/ProjectionQueryTest.java
Log:
HSEARCH-147 project Lucene document id

Modified: search/trunk/src/java/org/hibernate/search/ProjectionConstants.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/ProjectionConstants.java	2008-02-12 16:06:21 UTC (rev 14330)
+++ search/trunk/src/java/org/hibernate/search/ProjectionConstants.java	2008-02-12 17:02:10 UTC (rev 14331)
@@ -28,6 +28,11 @@
 	 */
 	public String ID = "__HSearch_id";
 	/**
+	 * Lucene Document id
+	 * Expert: Lucene document id can change overtime between 2 different IndexReader opening.
+	 */
+	public String DOCUMENT_ID = "__HSearch_DocumentId";
+	/**
 	 * Object class
 	 */
 	//TODO OBJECT CLASS

Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentExtractor.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentExtractor.java	2008-02-12 16:06:21 UTC (rev 14330)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentExtractor.java	2008-02-12 17:02:10 UTC (rev 14331)
@@ -51,6 +51,9 @@
 				else if ( ProjectionConstants.DOCUMENT.equals( projection[x] ) ) {
 					eip[x] = doc;
 				}
+				else if ( ProjectionConstants.DOCUMENT_ID.equals( projection[x] ) ) {
+					eip[x] = hits.id( index );
+				}
 				else if ( ProjectionConstants.BOOST.equals( projection[x] ) ) {
 					eip[x] = doc.getBoost();
 				}

Modified: search/trunk/src/test/org/hibernate/search/test/query/ProjectionQueryTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/query/ProjectionQueryTest.java	2008-02-12 16:06:21 UTC (rev 14330)
+++ search/trunk/src/test/org/hibernate/search/test/query/ProjectionQueryTest.java	2008-02-12 17:02:10 UTC (rev 14331)
@@ -185,7 +185,8 @@
 
 		Query query = parser.parse( "dept:ITech" );
 		org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
-		hibQuery.setProjection( "id", "lastname", "dept", FullTextQuery.THIS, FullTextQuery.SCORE, FullTextQuery.BOOST, FullTextQuery.DOCUMENT, FullTextQuery.ID );
+		hibQuery.setProjection( "id", "lastname", "dept", FullTextQuery.THIS, FullTextQuery.SCORE, FullTextQuery.BOOST,
+				FullTextQuery.DOCUMENT, FullTextQuery.ID );
 
 		int counter = 0;
 
@@ -219,7 +220,8 @@
 
 		Query query = parser.parse( "dept:Accounting" );
 		org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
-		hibQuery.setProjection( "id", "lastname", "dept", FullTextQuery.THIS, FullTextQuery.SCORE, FullTextQuery.BOOST, FullTextQuery.DOCUMENT, FullTextQuery.ID );
+		hibQuery.setProjection( "id", "lastname", "dept", FullTextQuery.THIS, FullTextQuery.SCORE, FullTextQuery.BOOST,
+				FullTextQuery.DOCUMENT, FullTextQuery.ID, FullTextQuery.DOCUMENT_ID );
 
 		List result = hibQuery.list();
 		assertNotNull( result );
@@ -236,9 +238,11 @@
 		assertTrue( "DOCUMENT incorrect", projection[6] instanceof Document );
 		assertEquals( "DOCUMENT size incorrect", 4, ( (Document) projection[6] ).getFields().size() );
 		assertEquals( "ID incorrect", 1001, projection[7] );
+		assertNotNull( "Lucene internal doc id", projection[8] );
 
 		// Change the projection order and null one
-		hibQuery.setProjection( FullTextQuery.DOCUMENT, FullTextQuery.THIS, FullTextQuery.SCORE, null, FullTextQuery.ID, "id", "lastname", "dept" );
+		hibQuery.setProjection( FullTextQuery.DOCUMENT, FullTextQuery.THIS, FullTextQuery.SCORE, null, FullTextQuery.ID,
+				"id", "lastname", "dept", FullTextQuery.DOCUMENT_ID );
 
 		result = hibQuery.list();
 		assertNotNull( result );
@@ -255,6 +259,7 @@
 		assertEquals( "id incorrect", 1001, projection[5] );
 		assertEquals( "last name incorrect", "Jackson", projection[6] );
 		assertEquals( "dept incorrect", "Accounting", projection[7] );
+		assertNotNull( "Lucene internal doc id", projection[8] );
 
 		//cleanup
 		for (Object element : s.createQuery( "from " + Employee.class.getName() ).list()) s.delete( element );




More information about the hibernate-commits mailing list