Author: epbernard
Date: 2006-06-10 23:50:42 -0400 (Sat, 10 Jun 2006)
New Revision: 10010
Added:
trunk/HibernateExt/metadata/lib/lucene-core-2.0.0.jar
Removed:
trunk/HibernateExt/metadata/lib/lucene-1.4.3.jar
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java
trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java
Log:
ANN-367 Lucene version update
ANN-368 Index keywork is now decapitalized
Deleted: trunk/HibernateExt/metadata/lib/lucene-1.4.3.jar
===================================================================
(Binary files differ)
Added: trunk/HibernateExt/metadata/lib/lucene-core-2.0.0.jar
===================================================================
(Binary files differ)
Property changes on: trunk/HibernateExt/metadata/lib/lucene-core-2.0.0.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java 2006-06-10 03:24:05 UTC (rev 10009)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java 2006-06-11 03:50:42 UTC (rev 10010)
@@ -9,6 +9,7 @@
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
+import java.beans.Introspector;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
@@ -18,6 +19,7 @@
import org.hibernate.HibernateException;
import org.hibernate.cfg.annotations.Version;
+//TODO handle attribute (only getters are handled currently)
public class DocumentBuilder<T> {
static {
@@ -36,10 +38,10 @@
private String idKeywordName;
private final Analyzer analyzer;
- public DocumentBuilder(Class clazz, Analyzer analyzer, File indexDir) {
+ public DocumentBuilder(Class<?> clazz, Analyzer analyzer, File indexDir) {
//this.beanClass = clazz;
this.analyzer = analyzer;
- String fileName = getTypeName( clazz, ( (Indexed) clazz.getAnnotation( Indexed.class ) ).index() );
+ String fileName = getTypeName( clazz, ( clazz.getAnnotation( Indexed.class ) ).index() );
file = new File( indexDir, fileName );
for ( Class currClass = clazz; currClass != null ; currClass = currClass.getSuperclass() ) {
@@ -96,26 +98,27 @@
public Document getDocument(T instance, Serializable id) {
Document doc = new Document();
- doc.add( Field.Keyword( idKeywordName, id.toString() ) );
+ doc.add( new Field( idKeywordName, id.toString(), Field.Store.YES, Field.Index.UN_TOKENIZED ) );
for ( int i = 0; i < keywordNames.size() ; i++ ) {
Member member = keywordGetters.get( i );
Object value = getValue( member, instance );
if ( value != null ) {
- doc.add( Field.Keyword( keywordNames.get( i ), toString( value ) ) );
+ doc.add( new Field( keywordNames.get( i ), toString( value ), Field.Store.YES, Field.Index.UN_TOKENIZED ) );
}
}
for ( int i = 0; i < textNames.size() ; i++ ) {
Object value = getValue( textGetters.get( i ), instance );
if ( value != null ) {
- doc.add( Field.Text( textNames.get( i ), toString( value ) ) );
+ doc.add( new Field( textNames.get( i ), toString( value ), Field.Store.YES, Field.Index.TOKENIZED) );
}
}
for ( int i = 0; i < unstoredNames.size() ; i++ ) {
Object value = getValue( unstoredGetters.get( i ), instance );
if ( value != null ) {
- doc.add( Field.UnStored( unstoredNames.get( i ), toString( value ) ) );
+ doc.add( new Field( unstoredNames.get( i ), toString( value ), Field.Store.NO, Field.Index.TOKENIZED ) );
}
}
+
return doc;
}
@@ -128,8 +131,16 @@
}
private static String getAttributeName(Method method, String name) {
- //FIXME: yuk! what about "is"
- return "".equals( name ) ? method.getName().substring( 3 ) : name;
+ if( ! "".equals( name ) ) return name; //explicit field name
+
+ //decapitalize
+ String methodName = method.getName();
+ //FIXME we probably should exclude methods not starting with "get" nor "is"
+ int startIndex = 3;
+ if( methodName.startsWith("is") ) {
+ startIndex = 2;
+ }
+ return Introspector.decapitalize( methodName.substring( startIndex ) );
}
private static String getTypeName(Class clazz, String name) {
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java 2006-06-10 03:24:05 UTC (rev 10009)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java 2006-06-11 03:50:42 UTC (rev 10010)
@@ -41,7 +41,7 @@
public class LuceneEventListener implements PostDeleteEventListener, PostInsertEventListener,
PostUpdateEventListener, Initializable {
- private Map<Class, DocumentBuilder> documentBuilders = new HashMap<Class, DocumentBuilder>();
+ private Map<Class, DocumentBuilder<Object>> documentBuilders = new HashMap<Class, DocumentBuilder<Object>>();
private boolean initialized;
private static final Log log = LogFactory.getLog( LuceneEventListener.class );
@@ -90,10 +90,10 @@
Iterator iter = cfg.getClassMappings();
while ( iter.hasNext() ) {
PersistentClass clazz = (PersistentClass) iter.next();
- Class mappedClass = clazz.getMappedClass();
+ Class<?> mappedClass = clazz.getMappedClass();
if ( mappedClass != null ) {
if ( mappedClass.getAnnotation( Indexed.class ) != null ) {
- final DocumentBuilder documentBuilder = new DocumentBuilder( mappedClass, analyzer, indexDir );
+ final DocumentBuilder<Object> documentBuilder = new DocumentBuilder<Object>( mappedClass, analyzer, indexDir );
documentBuilders.put( mappedClass, documentBuilder );
// try {
// IndexWriter iw = new IndexWriter( documentBuilder.getFile(), new StopAnalyzer(), true );
@@ -118,7 +118,7 @@
public void onPostInsert(PostInsertEvent event) {
final Object entity = event.getEntity();
- DocumentBuilder builder = documentBuilders.get( entity.getClass() );
+ DocumentBuilder<Object> builder = documentBuilders.get( entity.getClass() );
if ( builder != null ) {
add( entity, builder, event.getId() );
}
@@ -126,7 +126,7 @@
public void onPostUpdate(PostUpdateEvent event) {
final Object entity = event.getEntity();
- DocumentBuilder builder = documentBuilders.get( entity.getClass() );
+ DocumentBuilder<Object> builder = documentBuilders.get( entity.getClass() );
if ( builder != null ) {
final Serializable id = event.getId();
remove( builder, id );
@@ -134,12 +134,12 @@
}
}
- private void remove(DocumentBuilder builder, Serializable id) {
+ private void remove(DocumentBuilder<?> builder, Serializable id) {
Term term = builder.getTerm( id );
log.debug( "removing: " + term );
try {
IndexReader reader = IndexReader.open( builder.getFile() );
- reader.delete( term );
+ reader.deleteDocuments( term );
reader.close();
}
catch (IOException ioe) {
@@ -147,9 +147,11 @@
}
}
- private void add(final Object entity, final DocumentBuilder builder, final Serializable id) {
+ private void add(final Object entity, final DocumentBuilder<Object> builder, final Serializable id) {
Document doc = builder.getDocument( entity, id );
- log.debug( "adding: " + doc );
+ if( log.isDebugEnabled() ) {
+ log.debug( "adding: " + doc );
+ }
try {
File file = builder.getFile();
IndexWriter writer = new IndexWriter( file, builder.getAnalyzer(), ! file.exists() );
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java 2006-06-10 03:24:05 UTC (rev 10009)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java 2006-06-11 03:50:42 UTC (rev 10010)
@@ -78,7 +78,7 @@
docs = reader.termDocs( new Term( "Title", "Action" ) );
doc = reader.document( docs.doc() );
assertFalse( docs.next() );
- assertEquals( "1", doc.getField( "Id" ).stringValue() );
+ assertEquals( "1", doc.getField( "id" ).stringValue() );
reader.close();
s = getSessions().openSession();
@@ -109,7 +109,7 @@
docs = reader.termDocs( new Term( "Title", "Seam" ) );
doc = reader.document( docs.doc() );
assertFalse( docs.next() );
- assertEquals( "2", doc.getField( "Id" ).stringValue() );
+ assertEquals( "2", doc.getField( "id" ).stringValue() );
reader.close();
s = getSessions().openSession();
|