public interface IndexedEntityDescriptor {
I find the name "IndexedEntityDescriptor" in conjunction with isIndexed()
potentially returning "false" a bit irritating. Maybe just EntityDescriptor? Or
SearchableEntityDescriptor?
I thought about EntityDescriptor, but found it to generic. Somehow I wanted to have the
connection to Search/Lucene. SearchableEntityDescriptor implies that I can search
something in the descriptor. I am not 100% happy about IndexedEntityDescriptor either, but
for now I still think it is the best.
boolean isIndexed();
Maybe return an enum if this can potentially be more than a simple yes/no? I don't
know how likely that is, but an enum would allow for evolvement.
Not sure this is needed. I don't foresee that this would change.
Set<String> getIndexNames();
Would something like Set<IndexDescriptor> getIndexes() make sense?
That's an interesting thought. In fact I was wondering whether more index specific
information is needed. On the other hand,
I was thinking thinking that as long as you have the index name you can always get more
information via accessing the IndexManager
directly - SearchFactoryImplementor.getAllIndexesManager.getIndexManager(String
indexName)
Now that you bring it up, I am wondering, however, if we could expose thinks like
directory type via a IndexDescriptor.
At least for my case I think it would be easier if this contained all
field descriptors so I can handle them uniformly. Maybe FieldDescriptor#isId() or if there
are more id specific things something like this could be added:
sounds good
// TODO should OBJECT_CLASS be considered?
Set<FieldDescriptor> getIndexedFields();
Could you also add FieldDescriptor getIndexedField(String fieldName);
sure
public interface FieldDescriptor {
/**
* Returns the Lucene {@code Document} field name for this indexed property.
*
* @return Returns the field name for this index property
*/
String getFieldName();
I'd call it just "getName()", not repeating the type's name.
ok
public interface FieldNameReportingBridge {
Iterable<String> getGeneratedFieldNames(String baseFieldName);
}
Not better a Set? Returning Iterable makes it harder for users (e.g. no contains()) and
also hides set vs. list semantics.
+1
thanks for the great feedback :-)
--Hardy