Since Lucene 2.1.0 it is possible to configure that certain fields from the document are read with lazy loading. Therefore Compass may trigger ClassCastException, because it sometimes still uses org.apache.lucene.document.Field whereas org.apache.lucene.document.Fieldable would be better.
It should be changed at least in the following classes:
org.compass.core.lucene.LuceneProperty:
private Fieldable field;
public LuceneProperty(Fieldable field) {
this.field = field;
}
public LuceneProperty(Fieldable field, RepeatableReader reader) {
this.field = field;
this.reader = reader;
}
public Fieldable getField() {
return this.field;
}
org.compass.core.lucene.LuceneResource:
public LuceneResource(String alias, Document document, int docNum, LuceneSearchEngine searchEngine) {
...
List fields = document.getFields();
for (Iterator fieldsIt = fields.iterator(); fieldsIt.hasNext()
{
Fieldable field = (Fieldable) fieldsIt.next();
LuceneProperty lProperty = new LuceneProperty(field);
lProperty.setPropertyMapping(resourceMapping.getResourcePropertyMapping(field.name()));
properties.add(lProperty);
}
}