static boolean isRelationshipField(ISearchField field) {
   if (AbstractSearchField.class.isInstance(field)) {
     AbstractSearchField selection = (AbstractSearchField) field;
     return selection.getRootField().getDataType().equals(DataTypeEnum.RELATIONSHIP)
         && (selection.getInnerField() == null
             || selection.getInnerField().equals(InternalFieldEnum.ID.getDbName()));
   }
   return false;
 }
  @Override
  public boolean isIndexUsable(ISearchField field, MetaClass metaClass) {
    Collection<IndexInfo> indexes = metaClass.getIndexesOnField(field.getFieldName());
    for (IndexInfo index : indexes) {
      String firstKey = index.getKeyList().get(0);
      MetaField metaField = metaClass.getFieldByName(firstKey);

      String physicalKeyName = getFieldValueName(metaField);
      if (metaField.getDataType().equals(DataTypeEnum.RELATIONSHIP)) {
        physicalKeyName =
            metaField.getFlattenValueDbName()
                + AbstractEntityIDHelper.DOT
                + InternalFieldEnum.ID.getDbName();
      }
      if (physicalKeyName.equals(field.getFullDbName())) {
        return true;
      }
    }
    return false;
  }