[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